1

我正在将 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 还很陌生。我有办法解决这个问题吗?这是用户/路由和/路由通配符之间的冲突。

4

1 回答 1

7
Route::resource('/user', 'UserController@index');
Route::resource('/user/{route}', 'UserController');

问题是您正在使用Route::resource来声明路由,而通过使用Route::resource您实际上是在声明一个 RESTful 控制器,其中包含一个由 Laravel 自动处理的操作表。您使用不正确。

请参阅文档以查看在后台处理了哪些路由(以及冲突的根源):

查看名为“资源控制器处理的操作”的表

对于不在表中的任何路由处理程序,您必须声明单独的路由。就像是:

Route::get('foo/filter/{filterName}/{filterValue}',
        array('as'=>'filteredroute','uses'=>'FooController@filter'))

总而言之,Route::resource使您能够快速CRUD RESTful访问。

于 2013-10-26T15:41:13.257 回答