我正试图使用laravel在表单上执行一个put请求,它返回一个methodnotallowedexception,表单如下:<form role="form" method="POST" action="{{ route('negocio.update', $negocio->id) }}" enctype="multipart/form-data">
{{ method_field('PUT') }}
</form>
我的路线是:Route::put('/update/{id}', ['as' => 'negocio.update', 'uses' => 'client\NegocioController@update']);
使用php artisan route:list
命令提供以下路径:| PUT | update/{id} | negocio.update | App\Http\Controllers\client\NegocioController@update | web
有人能解释我,我做错什么了吗?我已经在不同的网站上搜索过了,但是没有解决办法。
*更新:
我打开浏览器检查器以查看正在执行的请求类型,它正在尝试使用get方法访问另一个路由,我没有注册该方法,因此显示错误的原因是,但问题是,我不知道表单为什么要提交到另一个url。
最佳答案
如果negocio
是一个资源控制器,并且您将其保存在web.php文件中,如下所示:Route::resource('negocio','NegocioController');
,请尝试按如下方式执行:
<form method="POST" action="{{route('negocio.update', $negocio->id)}}" enctype="multipart/form-data">
{{ method_field('PUT') }}{{csrf_field()}}
</form>
但不要使用这个(删除或评论它):
Route::put('/update/{id}', ['as' => 'negocio.update', 'uses' => 'client\NegocioController@update']);
如果它不是资源控制器,则在路由文件中声明它,如下所示:
Route::put('/update/{id}', 'NegocioController@update')->name('negocio.update');
如果这不起作用,那就用post试试,让
{{method_field('Put')
来起作用。Route::post('/update/{id}', 'NegocioController@update')->name('negocio.update');
希望这有帮助。如果是,请告诉我们。
关于php - PUT请求Laravel上的MethodNotAllowedException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41642421/