我有一个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
,但我真的想将配置文件逻辑与类别逻辑分离到他们自己的控制器中。
这里的最佳做法是什么?
答案 0 :(得分:0)
如果您的用户路线总是采用/firstname.lastname
的形式,您可以尝试Regular Expression Constraints:
Route::get('/{userSlug}', array('uses' => 'ProfileController@getProfile'))
->where('name', '[a-z]+\.[a-z]+');
然后,按照你的所有类别路线进行跟进。不过,您最好先为类别网址添加前缀(例如/category/category-1
)。