Лучший способ предоставить альтернативные методы маршрутизации - PullRequest
3 голосов
/ 27 июня 2011

Я хочу добавить возможность разрешать страницы, хранящиеся в базе данных, в проект Symfony 2.0. Однако мне любопытно, когда лучше всего подключить эту функцию.

В соответствии с жизненным циклом Symfony 2, маршрутизатору предлагается создать контроллер (вызываемый). Есть ли какой-нибудь способ или где-нибудь, что я могу эффективно создать свой собственный маршрутизатор, который может выбирать и производить другой контроллер с различными вариантами конфигурации?

В идеале я бы хотел, чтобы этот механизм маршрутизации также передавал маршруты, которые он не может выполнить. Таким образом, Symfony может продолжать вести себя как обычно с такими вещами, как поведение 404 и т. Д ...

1 Ответ

4 голосов
/ 27 июня 2011

Да. Вы можете реализовать класс, который реализует Symfony\Component\Routing\RouterInterface - прочитайте классы в Symfony\Bundle\FrameworkBundle\Routing, чтобы увидеть пример реализации.

Возможно, вам придется много покопаться, чтобы сделать это, так как на пользовательских маршрутизаторах не так много документации и (предположительно) незнакомая кодовая база, но весь код Symfony2, который я видел, следует далее или менее того же шаблона, и становится легче знать, где искать и что нужно сделать, чтобы быстро переопределить / реализовать пользовательские детали. И код довольно чистый, что является огромным плюсом.

Я не знаю деталей того, что точно потребуется для вашей реализации, может быть, кто-то еще, кто знает больше специфики, может расширить. Тем не менее, я знаю, что это не невозможно, и по большей части, если вы реализуете классы, которые удовлетворяют требованиям интерфейса, которые вы видите в Symfony\Component\Whatever, вы сможете реализовать то, что вы хотите.

...