在laravel覆盖资源路线获取路线,如何克服这一点

时间:2017-01-08 12:12:17

标签: php laravel laravel-5

我的laravel路线文件中有以下路线:

Route::get('/{id}' , [
    'uses' => 'PagesController@show',
    'as' => 'getArticle'
]);

上述路线的问题是,它覆盖了以下路线:

Route::resource('admin', 'adminController');

我想保留我的资源路线,但我如何保留我的资源?有没有办法解决这个问题?

3 个答案:

答案 0 :(得分:3)

像这样修改您的路线文件。

Route::resource('admin', 'adminController');

Route::get('/{id}' , [ 'uses' => 'PagesController@show', 'as' => 'getArticle' ]);

按照定义的顺序路由文件。

如果您在开头定义Route::get('/{id}',....并将您的网址设置为http://your-site/admin,那么admin部分将被视为id路由的Route::get('/{id}',.... 。因此,在定义路线时,您需要牢记这一点。

答案 1 :(得分:1)

只需在web.php文件的末尾移动此路由。

Route::get('/{id}' , [
'uses' => 'PagesController@show',
'as' => 'getArticle'
]);

答案 2 :(得分:1)

有两种选择:

  • Route::get('/{id}', ...)
  • 之后移动Route::resource(...) 如果Route::get()为数字id,则
  • 或向Route::get('/{id}', ...)->where('id', '[0-9]+');添加模式