首页 > 解决方案 > laravel中的路线重叠

问题描述

我有以下两条路线:

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\-\_]+');

我怎样才能克服这个路线重叠问题。请建议。

标签: phplaravelrouteslaravel-routinglaravel-5.6

解决方案


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

Route::get('categories/{category}/{slug}',   'GetFrontendController@tourDetail')->name('tourDetail');

Route::get('pcatslugs/{pcatslug}/{pslug}','GetFrontendController@getPage')->name('page');

推荐阅读