Symfony 3 - маршрутизация в зависимости от имени хоста - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь условно использовать маршруты с несколькими домианами.

То, что у меня сейчас есть:

admin_routes:
    host:     "admin.{domain}"
    resource: "@AppBundle/Controller/Admin"
    type: annotation
    requirements:
        domain: domain.local|domain2.local
    defaults: { domain: domain.local }

user_routes:
    host:     "user.{domain}"
    resource: "@AppBundle/Controller/User"
    type: annotation
    requirements:
        domain: domain3.local|domain4.local
    defaults: { domain: domain3.local }

Контроллеры в обеих папках имеют одинаковые имена маршрутов, как в приложениипостроено.Выше не работает, так как приложение все еще загружает оба маршрута.Для домена пользователя создаются URL-адреса от администратора.Возможно ли вообще то, что я пытаюсь достичь, или я делаю этот неправильный путь полностью?

В конечном счете, мне бы хотелось, чтобы набор контроллеров был «видимым» только для данного имени хоста.

1 Ответ

1 голос
/ 04 мая 2019

Маршруты должны иметь уникальное имя. Если есть 2 маршрута с одинаковым именем, один переопределит другой. Что касается спецификации хоста, это влияет только на соответствие маршрута или нет. Аналогично требованиям маршрута.

Решение вашей проблемы - по-разному называть маршруты в обоих контроллерах. Как этого добиться, можно использовать префиксы имени маршрута в аннотации класса Controller.

/**
 * @Route("/path", name="admin_")
 */

и

/**
 * @Route("/path", name="user_")
 */

https://symfony.com/blog/new-in-symfony-3-4-prefix-all-controller-route-names

Маршруты могут иметь одинаковый префикс /path, но их имя должно отличаться. Таким образом, они могут сопоставить один и тот же путь с разными условиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...