Как описать проверку двух связанных параметров в роутинге?

На сайте несколько стран, у каждой страны есть несколько доступных языков.
URL выглядят следующим образом: '/{country_code}/{lang_code}'
Указать ограничения для кодов стран и языков можно через requirements, но как сделать проверку, что после конкретного кода страны идет код одного из нескольких доступных для нее языков, а не просто любой код языка из списка?
  • Вопрос задан
  • 2495 просмотров
Решения вопроса 1
DYPA
@DYPA
написать EventSubscriber
<?php

namespace XXXBundle\EventListener;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;

class LocaleSubscriber implements EventSubscriberInterface
{
    public function onKernelRequest(GetResponseEvent $event)
    {
        $request = $event->getRequest();

        //дальше в request находим свой роут и параметры
        //потом делаем проверки
    }
    public static function getSubscribedEvents()
    {
        return [
            KernelEvents::REQUEST => [['onKernelRequest', 15]],
        ];
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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