у меня есть 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
, но я очень хочу отделить логику профиля от логики категории на свои контроллеры.
Какова лучшая практика здесь?
Если ваши пользовательские маршруты будут всегда быть в форме /firstname.lastname
можно попробовать Ограничения регулярных выражений:
Route::get('/{userSlug}', array('uses' => 'ProfileController@getProfile'))
->where('name', '[a-z]+\.[a-z]+');
Затем проследите за этим по маршруту «поймай все». Тем не менее, вам было бы гораздо лучше добавить префикс URL вашей категории (например, /category/category-1
) вместо
Других решений пока нет …