具有不同控制器的Laravel 5.2中相同级别的动态路由

时间:2016-11-30 08:45:47

标签: php laravel routing laravel-5.2 routeparams

我有一个ProfileController和一个CategoryController

我想通过以下路线显示用户的个人资料:

my.domain.com/firstname.lastname
my.domain.com/firstname2.lastname2
...

就像Facebook正在做的那样。因此,我想在ProfileController内处理这个问题,所以我最终选择了这样的路线:

Route::get('/{userSlug}', array('uses' => 'ProfileController@getProfile'));

这没问题,而且运行正常。但现在我想显示我的类别:

my.domain.com/category-1
my.domain.com/category-2
...

问题是,我会这样做这样的路线:Route::get('/{categorySlug}', array('uses' => 'CategoryController@getCategory'));但是这条路线已被配置文件使用。

我知道我只能使用一个控制器并检查slug是否为userSlug或categorySlug,但我真的想将配置文件逻辑与类别逻辑分离到他们自己的控制器中。

这里的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

如果您的用户路线总是采用/firstname.lastname的形式,您可以尝试Regular Expression Constraints

Route::get('/{userSlug}', array('uses' => 'ProfileController@getProfile'))
        ->where('name', '[a-z]+\.[a-z]+');

然后,按照你的所有类别路线进行跟进。不过,您最好先为类别网址添加前缀(例如/category/category-1)。