laravel中的路线重叠

时间:2018-08-05 11:30:48

标签: php laravel routes laravel-routing laravel-5.6

我有两条路线:

Route::name('frontend-')->group(function () {
    Route::get('/{category}/{slug}', 'GetFrontendController@tourDetail')->name('tourDetail');
    Route::get('/{pcatslug}/{pslug}','GetFrontendController@getPage')->name('page');
});

路由名称page与路由名称tourDetail重叠。当我尝试访问路由page tourDetail时会调用函数,因为首先声明了路由tourDetail

我尝试将它们放在不同的命名组中,并且应用的正则表达式模式仍然无法解决此问题。

我应用的正则表达式模式是:

Route::pattern('category', '[A-Za-z\d\-\_]+');
Route::pattern('slug','[A-Za-z\d\-\_]+');
Route::pattern('pcatslug', '[A-Za-z\d\-\_]+');
Route::pattern('slug','[A-Za-z\d\-\_]+');

如何解决此路线重叠问题。请提出建议。

1 个答案:

答案 0 :(得分:2)

这将不起作用,因为路由器模板指定了相同的一种模式。为确保路由器系统不重新定义路由,您必须更改模式或在URL中添加带有单独名称的静态部分,例如:

Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)