在网站开发过程中我遇到了这个问题。我试图从视图中的窗体调用控制器方法。这是视图中的代码:
{{ Form::open(array('route' =>['deletes', $client])) }}
{{ Form::button('Delete', ['class'=>'btn btn-danger', 'type'=>'submit']) }}
{{ Form::close() }}
正如您所看到的,我正在尝试将对象$client
传递给路径所指的方法。路线定义如下:
Route::post('/client_show/destroy','ClientsController@destroy')->name('deletes');
这是ClientController方法:
public function destroy(Client $client) {
$client->delete();
return redirect('/client_show')->with('success', 'Deleted');
}
问题是,即使$client
对象确实在表单中初始化,只要调用destroy(Client $client)
,$client
变量就会为空。因此删除过程失败,没有删除任何内容。我尝试过使用
'url' =>['/client_show/destroy', $client]
相反,但是每当我得到空物时,似乎没有任何效果。谢谢你的帮助。
答案 0 :(得分:1)
您尚未在路线定义中定义任何路线参数。因此,当调用destroy()
控制器方法时,它将传递一个普通的new Client
对象。
将路线参数添加到您的路线中,您应该做得很好:
Route::post('/client_show/destroy/{client}', 'ClientsController@destroy')->name('deletes');
答案 1 :(得分:1)
您需要在路线中添加{client}
:
Route::post('/client_show/destroy/{client}','ClientsController@destroy')->name('deletes');
然后你需要传递ID而不是整个对象:
{{ Form::open(['route' => ['deletes', $client->id]]) }}