Laravel 5.2:RouteCollection.php 第 219 行中的 MethodNotAllowedHttpException - 更新表单
Posted
技术标签:
【中文标题】Laravel 5.2:RouteCollection.php 第 219 行中的 MethodNotAllowedHttpException - 更新表单【英文标题】:Laravel 5.2 : MethodNotAllowedHttpException in RouteCollection.php line 219 - updating the forms 【发布时间】:2016-07-30 20:53:11 【问题描述】:我有一个表格,我正在尝试更新表格。在表单中,'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()
【问题讨论】:
我觉得MethodNotAllowedHttpException
通常与posting
与get
路由相关,反之亦然,这也是错误消息显示的内容。您是否有一个 get
路由定义到您的post
路由上方的同一位置?
@camelCase 。是的,我有很多获取路线... Route::get('/sadmin/clubs', 'SAdmin\ClubController@Clubs'); Route::get('/sadmin/add_club', 'SAdmin\ClubController@addClub');
但是'/sadmin/update_club'
有吗?
【参考方案1】:
我在这里没有看到任何错误,因此错误可能在其他地方。例如,我看到您在这条路线上使用superadmin
。您应该在控制台中运行:
php artisan route:list
查看哪些中间件应用于updateClub
路由名称并验证此中间件代码,因为其中一些可能进行了不正确的重定向(例如,方法GET
到只有POST
的路由)。
第二件事(这里不会引起问题,但您应该遵循一些标准) - 如果您创建更新某些内容的操作,您应该使用 PUT
方法(POST 用于创建新对象),因此在路由和表单中对于这条路线,您应该将 POST 更改为 PUT
编辑
问题也可能有点不同。假设您有多步骤表单(可能是您的情况,因为您仅将 POST 用于在第 2 步中出现错误,请求类将尝试再次重定向到第 2 步,但使用 GET 方法,因此您应该在 routes.php 中也允许 GET
方法,所以在您的情况下,您可能应该更改
Route::post('someroute' ...
进入:
Route::match(['get','post'], 'someroute' ...
您应该为显示此表单的页面执行此操作
【讨论】:
实际上这个问题只有在我添加表中已经存在的名称时才存在。如果我将请求 - “'name'=>'required|unique:clubs,name,'.Request::input('id')”更改为“'name'=>'required'”,它将起作用 @LindoSebastian 但是您是否已将其更改为显示表单的路线?在显示此表单的 routes.php 中显示路线 @LindoSebastian 很高兴我能提供帮助以上是关于Laravel 5.2:RouteCollection.php 第 219 行中的 MethodNotAllowedHttpException - 更新表单的主要内容,如果未能解决你的问题,请参考以下文章