带有参数的 Laravel 资源导致其他路由抛出错误
Posted
技术标签:
【中文标题】带有参数的 Laravel 资源导致其他路由抛出错误【英文标题】:Laravel resource with parameter causing other routes to throw error 【发布时间】:2013-10-30 20:09:51 【问题描述】:我遇到了这个问题,如果我在第一个路由中定义一个参数,第二个会抛出这个错误:
“路由模式“/browse/brand/brand”不能多次引用变量名“brand”。”
Route::resource('browse/brand', 'BrowseController');
Route::group(array('prefix' => 'service'), function()
Route::resource('authenticate', 'AuthenticationController');
);
如果我取出参数,当然会破坏浏览路线,但随后身份验证路线有效。
有人知道这是什么原因吗?
【问题讨论】:
【参考方案1】:原因是Route::resource
在后台为您指定的控制器创建了几个(RESTful)路由处理程序:
http://laravel.com/docs/controllers#resource-controllers
查看名为:Actions Handled By Resource Controller
的表格你可以看到 Laravel 已经为你处理了带有参数的路由,你可以使用这些参数来实现浏览。
我不认为Route::resource
的预期用途是像您尝试的那样进行参数化。
当然,如果那些不符合您的需求,您总是可以实施其他路线。
【讨论】:
该表确实显示了一个允许您传入参数的方法,显示。奇怪的是,如果我颠倒路线的顺序,它们都可以工作并且我没有收到错误,但之后的任何事情都会失败。不清楚发生了什么。我能够通过注册 GET 路由并将另一种方法添加到控制器 Route::group(array('prefix' => 'service'), function() Route::resource('authenticate', 'AuthenticationController'); ); Route::resource('browse/brand', 'BrowseController');以上是关于带有参数的 Laravel 资源导致其他路由抛出错误的主要内容,如果未能解决你的问题,请参考以下文章