@sgidlev

Как сделать динамический Static Route?

Приветствую.

Помогите собрать регулярное выражение для статического маршрута:
Мне нужен маршрут вида: "/shop/category1/category2/category3" и мне нужно получить последний параметр в маршруте category3. Также маршрут может быть вида "/shop/category1" или "/shop/category1/category2/category3/category4/category5".

Я попробовал использовать для паттерна #shop/(.*?)# и /shop/%category. Маршрут работает, но ничего не возвращает.
Попробовал #shop/(.*?)([a-z\-]+)# и

Hi. Could someone help me with the Static Routes? I need to make a route like "/shop/category1/category2/category3" and I need to get only the last param value (category3). Also the route could be "/shop/category1" or "/shop/category1/category2/category3/category4/category5", so it should be dynamic. I tried this one: #shop/(.*?)# and /shop/%category and I send param "category" to the controller. The route is working, but I can't get the "category" param.
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
Fett
@Fett
Разработчик
Можете попробовать так:
shop\/.*?(?P<last>[^\/]+)$
Пример
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
thewind
@thewind
php программист, front / backend developer
$routeParts = explode('/', $route);
$lastRouteParam = end($routeParts);

так не пойдет?) Если у вас могут быть GET параметры еще, то сначала используйте parse_url функцию
$route = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
Ответ написан
paulfcdd
@paulfcdd
PHP/Sf/WEB developer
Не изобретайте велосипед, используйте готовые библиотеки для маршрутизации, тот же Symfony Router, например. Зачем делать то, что до вас уже сделали?)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы