В моем проекте Symfony2 у меня есть новостной сайт с сообщениями. Эти должности могут быть опубликованы в разных регионах. Текущая область (выбор пользователя) должна быть частью URL-адреса. Таким образом, URL-адрес должен выглядеть следующим образом:Можно ли добавить пользовательские глобальные переменные маршрута Symfony2, такие как _format и _locale?
/mag => main news site, no region selection
/mag/region1/ => posts for region 1
/mag/region2/ => ...
/mag/region1/my-news-post-slug => detail view of one post
Для новостных сообщений, я использовал Sonata News Bundle.
Теперь, мой вопрос: Как мне добавить регион в систему маршрутов без изменения каждого контроллера и шаблона пакетов, которые я использую? Когда я просто добавить его в маршрутизации конфигурации как
magazin:
resource: '@SonataNewsBundle/Resources/config/routing/news.xml'
prefix: /mag/{region}
я получаю ошибки, так как этот параметр не задан при создании маршрута в контроллерах и шаблоны новостей пачке (и другие). Мне нужно что-то вроде переменных маршрута {_format}
или {_locale}
, которые, очевидно, уже добавлены компонентом маршрутизации. Можно ли добавить такие глобальные значения?
Я полагаю, вы могли бы использовать прослушиватель событий, чтобы вырезать номер региона и добавить его как атрибут _region. Я не понимаю, как вы могли бы использовать этот атрибут без изменений нисходящего потока. – Cerad
Я продлил комплект новостей с помощью простого расширения пакета и скорректировал 2 метода в контроллере. Я не хочу копировать и редактировать весь код исходных пакетов, но только некоторые вещи, которые мне действительно нужно изменить/расширить. – Michael
Да. Это всегда одна из опасностей использования сторонних пакетов. Может быть, черта может помочь. – Cerad