2014-02-03 2 views
5

Мне нужно иметь разные маршруты, указывающие на один и тот же комплект. Ex:/mkt/контакты и/crm/контакты должны указывать на один и тот же контактный комплект.Тот же пучок разных маршрутов

Почему? Я разрабатываю платформу (один проект symfony2), в которой есть много приложений (маркетинговое приложение, CRM-приложение и т. Д. Каждое приложение представляет собой группу модулей (пакетов), некоторые из которых совместно используются приложениями (например, ContactsBundle).

Что мне нужно сделать, так это то, что префикс маршрута общих пакетов относится к текущему приложению, поэтому, если пользователь находится в Маркетинговом приложении (/ mkt /), то префикс маршрута к ContactBundle должен быть/mkt/. контакт Но если в приложении CRM должно быть/CRM/контакты

Я думаю, что я могу создать два маршрута ресурсы routing.yml так:

route1: 
    resource: "@Contactundle/Resources/config/routing.yml" 
    prefix: /crm/contact 
route2: 
    resource: "@ContactBundle/Resources/config/routing.yml" 
    prefix: /mkt/contact 

Самая большая проблема в представлениях при использовании функции пути. Как узнать название маршрута? Единственное возможное решение, о котором я могу думать, это создать некоторое расширение ветки, которое проверяет текущую pathinfo и возвращает правильный префикс маршрута.

Любые лучшие идеи?

+0

Вы хотите знать, находитесь ли вы в/crm/contact или in/mkt/contact на ваш взгляд? – VBee

ответ

1

Вы должны использовать один маршрут, но использовать mkt и crm в качестве переменной.

contact: 
    path:  /{ prefix }/contact 
    defaults: { _controller: YourContactBundle:Contact:contact } 

Затем в веточке или туда, куда вы хотите

{{ path('contact', { 'prefix': prefix }) }} 

Вы должны получить переменный контакт на сессии или путем предоставления параметров маршрута.

Поскольку это всего лишь несколько связок, которые являются общими, я бы рекомендовал указать параметр. В домашнем приложении на рынке я бы назвал контактную форму: {{ path('contact',{ 'app_prefix' : constant_prefix_mkt}) }}

0

Вы не хотите, чтобы загрузить весь ваш файл комплект Routing два раза с префиксом Дифференц

Try:

приложения/routing.yml

crm_contact: 
    path:  /crm/contact 
    defaults: { _controller: YourContactBundle:Contact:contact } 
mkt_contact: 
    path:  /mkt/contact 
    defaults: { _controller: YourContactBundle:Contact:contact } 

то в вашей веточке:

{{ path(app.request.attributes.get('_route')) }} 

 Смежные вопросы

  • Нет связанных вопросов^_^