我有一个 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是用户插件还是categorySlug
,但是我真的想将配置文件逻辑与类别逻辑分开为自己的控制器。
这里最好的做法是什么?
如果您的用户路由将以/firstname.lastname
的形式,则可以尝试正则表达式约束:
Route::get('/{userSlug}', array('uses' => 'ProfileController@getProfile'))
->where('name', '[a-z]+.[a-z]+');
然后,跟随您的全部类别路由。但是,您会更好地将类别URL前缀(例如/category/category-1
)。