Laravel4路由模式错误

squ*_*dev 1 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');
Run Code Online (Sandbox Code Playgroud)

对于我的用户路线,我有一个自定义路由器,用于路由用户信息,而不是真正的问题.但所有这些都很有效,但是当我尝试导航到"/ test"时,Wich会链接到测试页面,它会给我这个错误.

Route pattern "/user/{route}/{{route}}" cannot reference variable name "route" more than once.
Run Code Online (Sandbox Code Playgroud)

它涉及路由器逻辑,我对laravel相当新.我有办法解决这个问题吗?这是用户/路由和/ route通配符之间的冲突.

Gla*_*elp 7

Route::resource('/user', 'UserController@index');
Route::resource('/user/{route}', 'UserController');
Run Code Online (Sandbox Code Playgroud)

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

查看文档以查看在后台处理哪些路由(以及冲突的来源):

看一下名为Actions Handled By Resource Controller的表

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

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

总结一下,Route::resource您可以快速进行CRUD RESTful访问.