Laravel 5.2:RouteCollection.php 行 219 中的 MethodNotAllowedHttpException - 更新表单
Laravel 5.2 : MethodNotAllowedHttpException in RouteCollection.php line 219 - updating the forms
我有一个表格,我正在尝试更新表格。在表单中,'name'是一个唯一字段(在请求页面添加了唯一条件,在table中,名称设置为唯一)。当我尝试更新表格时(我提供了值,table 中已经存在),它显示 'MethodNotAllowedHttpException in RouteCollection.php line 219' 错误。
如果我用 table 中不存在的不存在的名称更新 'name',它将正常工作。
路由器
Route::group(['middleware' => ['superadmin']], function () {
Route::post('/sadmin/update_club',array('uses' => 'SAdmin\ClubController@updateClub', 'as' => 'updateClub'));
}
要求
class UpdateClubRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|max:150|unique:clubs,name,'.Request::input('id'),
'logo' => 'image|mimes:jpeg,png,bmp,gif,svg|max:10000',
];
}
}
布局页面
{{ Form::open(array('route' => 'updateClub', 'method' => 'POST', 'class' => 'form-horizontal', 'files'=>true)) }}
{{ Form::hidden('id', $club[0]['id']) }}
{{ Form::text('name', $club[0]['name'], array('class' => 'form-control', 'maxlength' => 50)) }}
{{ Form::close() }}
我在这里没有看到任何错误,所以错误可能出在其他地方。例如,我看到您正在为这条路线使用 superadmin
。你应该在控制台中 运行:
php artisan route:list
查看哪些中间件应用于 updateClub
路由名称并验证此中间件代码,因为它们中的一些可能正在进行错误的重定向(方法 GET
到仅具有 POST
例如)。
第二件事(这里没有问题,但你应该遵循一些标准)- 如果你创建更新某些内容的操作,你应该使用 PUT
方法(POST 用于创建新对象), 所以在这条路线的路线和形式中你应该把 POST 改成 PUT
编辑
问题也可能有点不同。假设您有多步表单(可能是您的情况,因为您仅将 POST 用于 ,因此您使用以下方法 GET (step1) -> POST (step2) -> POST(第 3 步)。所以现在,如果在第 2 步中出现错误,请求 class 将尝试再次重定向到第 2 步,但使用 GET 方法,因此您应该在 routes.php 中也允许 GET
方法,所以在你的情况下你应该改变
Route::post('someroute' ...
进入:
Route::match(['get','post'], 'someroute' ...
您应该为显示此表单的页面执行此操作
我有一个表格,我正在尝试更新表格。在表单中,'name'是一个唯一字段(在请求页面添加了唯一条件,在table中,名称设置为唯一)。当我尝试更新表格时(我提供了值,table 中已经存在),它显示 'MethodNotAllowedHttpException in RouteCollection.php line 219' 错误。
如果我用 table 中不存在的不存在的名称更新 'name',它将正常工作。
路由器
Route::group(['middleware' => ['superadmin']], function () {
Route::post('/sadmin/update_club',array('uses' => 'SAdmin\ClubController@updateClub', 'as' => 'updateClub'));
}
要求
class UpdateClubRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|max:150|unique:clubs,name,'.Request::input('id'),
'logo' => 'image|mimes:jpeg,png,bmp,gif,svg|max:10000',
];
}
}
布局页面
{{ Form::open(array('route' => 'updateClub', 'method' => 'POST', 'class' => 'form-horizontal', 'files'=>true)) }}
{{ Form::hidden('id', $club[0]['id']) }}
{{ Form::text('name', $club[0]['name'], array('class' => 'form-control', 'maxlength' => 50)) }}
{{ Form::close() }}
我在这里没有看到任何错误,所以错误可能出在其他地方。例如,我看到您正在为这条路线使用 superadmin
。你应该在控制台中 运行:
php artisan route:list
查看哪些中间件应用于 updateClub
路由名称并验证此中间件代码,因为它们中的一些可能正在进行错误的重定向(方法 GET
到仅具有 POST
例如)。
第二件事(这里没有问题,但你应该遵循一些标准)- 如果你创建更新某些内容的操作,你应该使用 PUT
方法(POST 用于创建新对象), 所以在这条路线的路线和形式中你应该把 POST 改成 PUT
编辑
问题也可能有点不同。假设您有多步表单(可能是您的情况,因为您仅将 POST 用于 ,因此您使用以下方法 GET (step1) -> POST (step2) -> POST(第 3 步)。所以现在,如果在第 2 步中出现错误,请求 class 将尝试再次重定向到第 2 步,但使用 GET 方法,因此您应该在 routes.php 中也允许 GET
方法,所以在你的情况下你应该改变
Route::post('someroute' ...
进入:
Route::match(['get','post'], 'someroute' ...
您应该为显示此表单的页面执行此操作