#laravel
#ларавель
Вопрос:
У меня есть следующие 2 маршрута:
Route::get('/{category}/{slug?}', [CategoryController::class, 'index'])-gt;name('category.index')-gt;where('slug', 'trending|subtitled|feature');
Этот маршрут
Route::get('/cookies-policy', [PageController::class, 'cookiesPolicy'])-gt;name('cookiesPolicy');
Когда я пытаюсь получить доступ ко второму маршруту, вместо этого осуществляется доступ к первому контроллеру маршрута.
Как мне добавить условие к первому маршруту, если первого сегмента нет trending
, subtitled
или feature
затем проигнорировать? Я думал, что достиг этого с помощью: -gt;where('slug', 'trending|subtitled|feature')
Комментарии:
1. измените порядок этих 2 маршрутов … и ваше условие where будет зависеть от параметра категории, а не от параметра slug, если вы говорите о «первом сегменте».
2. попробовал это сделать, но затем маршрут категории не сработал.
cookies-policy
не входитtrending,subtitled or feature
, поэтому он не должен соответствовать сегменту категории3. если вы измените порядок маршрута, то второй маршрут будет соответствовать именно этому пути, а не первому маршруту, который вы показали … и у вас нет вашего условия » где » в сегменте категории, которое вы поместили в сегмент слизней …
where('slug', ...)
означает параметр slug, а не параметр категории4. Спасибо, я добавил условие » где » для сегмента категории, объявление теперь работает правильно.
5. Вам нужно изменить порядок маршрута
Ответ №1:
Вам нужно будет настроить, чтобы вы where
назначали шаблон параметру category
маршрута slug
, а не параметру:
-gt;where('category', ...);