【问题标题】:Laravel4 route pattern errorLaravel4 路由模式错误
【发布时间】:2013-11-05 15:53:14
【问题描述】:

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

【问题讨论】:

    标签: php laravel laravel-4 laravel-routing


    【解决方案1】:
    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 访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 2017-10-31
      • 2017-03-09
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      相关资源
      最近更新 更多