Laravel4路由模式错误

时间:2013-10-26 15:16:10

标签: php laravel laravel-4 laravel-routing

我正在使用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通配符之间的冲突。

1 个答案:

答案 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 访问。