我正在使用laravel 4进行cms项目,而且我的路线出现问题......
这些是我目前的路线
Route::get('/', 'IndexController@showNews');
Route::get('/logout', 'UserController@logout');
Route::resource('/login', 'UserController');
Route::resource('/user', 'UserController@index');
Route::resource('/user/{route}', 'UserController');
// Routes that shows us the pages...
Route::get('/{page}', 'IndexController@showPage');
Route::get('/{page}/{id}', 'IndexController@showPage');
对于我的用户路线,我有一个自定义路由器,用于路由用户信息,而不是真正的问题。但所有这些都很有效,但是当我尝试导航到“/ test”时,Wich会链接到测试页面,它会给我这个错误。
Route pattern "/user/{route}/{{route}}" cannot reference variable name "route" more than once.
它涉及路由器逻辑,而且我对laravel相当新。我有办法解决这个问题吗?这是用户/路由和/ route通配符之间的冲突。
答案 0 :(得分:7)
Route::resource('/user', 'UserController@index');
Route::resource('/user/{route}', 'UserController');
问题在于您使用Route::resource
来声明路由,而使用Route::resource
实际上是在声明一个RESTful控制器,其中包含一个由Laravel自动处理的操作表。您使用不正确。
请参阅docs以了解在后台处理哪些路线(因此也就是冲突的来源):
查看名为资源控制器处理的操作
的表格对于不在表中的任何路由处理程序,您必须声明单独的路由。类似的东西:
Route::get('foo/filter/{filterName}/{filterValue}',
array('as'=>'filteredroute','uses'=>'FooController@filter'))
总结一下,Route::resource
可让您快速 CRUD RESTful 访问。