我有一个表单,我正在尝试更新表单。在表格中,' name'是一个唯一字段(在请求页面和表中添加唯一条件,名称设置为唯一)。当我尝试更新表单时(我提供了值,表中已经存在),它在RouteCollection.php第219行'中显示' MethodNotAllowedHttpException。错误。
如果我更新了'名称'对于不在表中的不存在的名称,它将没有任何问题。
路由器
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() }}
答案 0 :(得分:2)
我在这里看不到任何错误,因此可能的错误可能在其他地方。例如,我看到您使用superadmin
作为此路线。你应该在控制台中运行:
php artisan route:list
查看哪些中间件应用于updateClub
路由名称并验证此中间件代码,因为它们中的一些可能正在进行错误的重定向(方法GET
仅路由{例如{1}}。
第二件事(它不会导致问题,但你应该遵循一些标准) - 如果你创建更新某些东西的动作,你应该使用POST
方法(POST用于创建新对象),因此,在此路线的路线和形式中,您应将POST更改为PUT
修改强>
问题可能也有点不同。让我们假设你有多步形式(可能这是你的情况因为你只使用POST,所以你使用以下方法GET(step1) - > POST(step2) - > POST(step3)现在,如果在step2中你得到错误,请求类会尝试再次重定向到step2,但是使用GET方法,所以你应该在routes.php中同时允许PUT
方法,所以在你的情况下你可能应该变化
GET
成:
Route::post('someroute' ...
您应该为显示此表单的页面执行此操作