在 Laravel 5.6 中向资源控制器添加自定义方法的正确方法是什么?
到目前为止,我拥有的是一种新方法ProfileController
:
public function approve($id){
$user = User::find($id);
$user->state = '1';
$user->save();
return redirect('/dashboard')->with('success', 'User approved.');
}
以及添加到我的web.php
文件中的以下几行:
Route::post('/profile/{$id}/approve', 'ProfileController@approve');
Route::resource('profile', 'ProfileController');
我认为的表单(afaik)正确呈现为:
<form method="POST" action="http://myurl.com/profile/10/approve" accept-charset="UTF-8">
<input name="_token" type="hidden" value="v3F1RRhi7iJL2o4egOhcRiuahaGQBwkGkfMal1lh">
<input name="_method" type="hidden" value="PATCH">
<input class="btn btn-success" type="submit" value="Approve User">
</form>
不幸的是没有任何反应,除了“抱歉,找不到您要查找的页面”。要显示的页面。
我错过了什么?并且还要扩展一下这个问题,这甚至是在数据库条目上实现“单个字段更新”的有效方法吗?
感谢您的帮助!
我看到你有两个问题:首先像这样纠正路线
Route::post('/profile/{id}/approve', 'ProfileController@approve');
其次你必须删除
<input name="_method" type="hidden" value="PATCH">
或者像这样替换你的路线:
Route::patch('/profile/{id}/approve', 'ProfileController@approve');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句