0

我有一个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 还是 a categorySlug,但我真的想将配置文件逻辑与类别逻辑分离到它们自己的控制器中。

这里的最佳做法是什么?

4

1 回答 1

0

如果您的用户路线将始终采用 的形式/firstname.lastname,您可以尝试正则表达式约束

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

然后,按照你的包罗万象的类别路线跟进。但是,最好在类别 URL 前加上前缀(如/category/category-1)。

于 2016-11-30T09:01:49.293 回答