@bagos

Как сформировать правильный route для запросов с дефисом?

Добрый день!
Как реализовать правильный route
Входные строки такие:
/blog/zero-six-five
/post/one-two-three
/post/one-two-three-moscow-zao


Для /post/one-two-three-moscow-zao на выходе должно получиться $ver0=post, $ver1=one-two-three, $ver2=moscow, $ver3=zao


Для /post/one-two-three $ver0=post, $ver1=one-two-three
Для /blog/zero-six-five $ver0=blog, $ver1=zero-six-five


Если в одном route совместить невозможно, то можно ли обработать их в разных, но так чтобы не перекрывали друг друга?

Route::get('/{category}/{variable_one}-{variable_two}-{variable_three}', ['uses' => 'Site\CategoryController@getSubCategoryIndex_test'])
->where('variable_one', '.*')
->where('variable_two', '.*')
->where('variable_three', '.*');
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
"one-two-three-moscow-zao" А у тебя PHP должен ванговать что-ли, то что ты хочешь вытащить??? С таким паттерном как у тебя в маршруте в самих варах не должно быть тире, а они есть. Так что твой шаблон максимум сработает для ровно трех-слоганного слова. Во-вторых, нахрена тебе разделять эти переменные прямо в маршруте?

Я напишу решение, но если такие базовые задачи ты решаешь так, то это не твое.

Route::get('/{category}/{title}', 'Site\CategoryController@getSubCategoryIndex_test');


ВСЕ. Дальше если тебе очень нужно, можешь создать паттерн байндер в сервайс провайдере, либо напрямую в контроллере разделять title на части.

С таким подходом как у тебя сейчас реализовать это НЕ ВОЗМОЖНО.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы