我正试图使用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/

10-09 15:21