Php 获取laravel中的路由覆盖资源路由,如何克服此问题

Php 获取laravel中的路由覆盖资源路由,如何克服此问题,php,laravel,laravel-5,Php,Laravel,Laravel 5,我的laravel路线文件中有以下路线: Route::get('/{id}' , [ 'uses' => 'PagesController@show', 'as' => 'getArticle' ]); 上述路线的问题在于,其覆盖以下路线: Route::resource('admin', 'adminController'); 我想保留我的资源路线,但如何保留我的资源?有办法解决这个问题吗?只需将此路径移动到web.php文件的末尾 Route::get('/

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

Route::get('/{id}' , [
    'uses' => 'PagesController@show',
    'as' => 'getArticle'
]);
上述路线的问题在于,其覆盖以下路线:

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

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

只需将此路径移动到web.php文件的末尾

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

像这样修改路由文件

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

Route::get('/{id}' , [ 'uses' => 'PagesController@show', 'as' => 'getArticle' ]);
按定义的顺序路由执行的文件

如果在开头定义
Route::get('/{id}',..
,并像
http://your-site/admin
admin
部分将被视为
Route::get('/{id})的
id
“,…
路线。因此,在定义路线时,您需要记住这一点。

有两种选择:

  • Route::resource(…)之后移动
    Route::get('/{id}',…)
  • 或者,如果
    id
    是数值的,则向
    Route::get()
    添加一个模式
    Route::get('/{id}',…)->where('id','[0-9]+');

这两个不同的路由不是吗?它们是如何覆盖的?或者你的意思是/admin/{id}?只需将Route::resource('admin','adminController');放在另一个路由之前。路由按照它们在routes中列出的顺序进行计算。phpIs是你的
路由::get(…)
在前缀为“admin”的
路由::组()中?按照末尾设置id为
id
的路由文件的顺序修改路由文件。请在下面查找我的答案。