将表单动作绑定到控制器方法

时间:2019-06-13 01:48:07

标签: php laravel

我正在尝试将表单操作(具有与模型/表记录相关的ID)绑定到控制器方法。

我的web.php具有

Route::post('/rejectControlTransfer/{id}', 'ControlTransferController@rejectControlTransfer')->name('controltransfers.rejectTransfer');

我的表格有

<form id='form_process_rejectControl' action="{{route('controltransfers.rejectTransfer', [$controlTransferId])}}" method="POST" style="display: inline;">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

我的控制器有

public function rejectControlTransfer(Request $request, ControlTransfer $controlTransfer)
{
   dd($controlTransfer->id);
}

我正在尝试将ControlTransfer $ controlTransfer与传递的实际ID绑定在一起,以便当我尝试获取$ controlTransfer-> id或$ controlTransfer-> name的值时,会给我它们的值。

当前我没有任何价值。

1 个答案:

答案 0 :(得分:1)

如果您在路由id中使用'/rejectControlTransfer/{id},则只能通过控制器中的$id变量(它是原始变量int)来访问它。

此外,您操作的“路线”功能未正确使用,您需要将'id'用作key,例如:

route('controltransfers.rejectTransfer', ['id' => $controlTransferId])

但是,如果您的ControlTransfer是模型,则可以使用Model Binding。通过:

Route::post('/rejectControlTransfer/{controlTransfer}', 'ControlTransferController@rejectControlTransfer')->name('controltransfers.rejectTransfer');

<form id='form_process_rejectControl' action="{{route('controltransfers.rejectTransfer', ['controlTransfer' => $controlTransferId])}}" method="POST" style="display: inline;">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

public function rejectControlTransfer(Request $request, ControlTransfer $controlTransfer)
{
   dd($controlTransfer->id);
}

免责声明:以上代码未经测试。