对控制器函数/方法的按钮调用



我正在使用Laravel 7,并且一直试图通过视图中的按钮启动Controller方法。我使用的是一个带有简单标签的表单,但不确定我的操作方式是否是最好的方式。此外,我在尝试的过程中遇到了一个错误。错误是:

Too few arguments to function AppHttpControllersTasksController::finished(), 1 passed in C:laragonwwwtaskappvendorlaravelframeworksrcIlluminateRoutingController.php on line 54 and exactly 2 expected

我真的被如何通过点击按钮来调用一个方法难住了。我试图做的是(当点击按钮时(将我的数据库中名为CCD_;完整";。

在主视图的表格中,我有一个这样的表格:

<td>
<form method="POST" action="/tasks/{{$task->id}}">
{{ csrf_field() }}
{{ method_field('POST') }}
<div class="ml-5">
<a href="{{ route('finished') }}" class="btn btn-success btn-sm"><i class="fa fa-check"></i></a>
</div>
</td>                       

在我的web.php中,我有:

Route::get('/finished/{id}', 'TasksController@finished')->name('finished');

在我的TasksController中,我有以下内容:

public function finished(Request $request, $id) {
$task = Task::find($id);
dd($task);
$task->task_status = $request['task_status'] = 'Completed';
$task->save();
return redirect('home')->with('success', 'Task Completed and now viewable in Completed Tasks!');
}

如果有人能向我展示一种更好的方法(不使用axaj(,我会非常感激。提前谢谢。

我最终使用以下代码修复了这个问题:在我的web.php中,我使用了:

Route::get('/finished/{id}', 'TasksController@finished');

在我家.blade.php中,我有:

<td>
<form action="finished/{{$task->id}}" method="GET" style="display: inline" class="">
@csrf
@method('POST')
<div class="ml-5">
<button type="submit" class="btn btn-sm btn-success">
<i class="fa fa-check"></i>
</button>
</div>
</form>                              
</td>

在我的TasksController中,我几乎放弃了原来的方式,现在它可以工作了。

最新更新