Symfony2: изменить визуализированный вид с помощью слушателя

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

@Route("/articles/show", name="articles_show")
@Route("/mobile/articles/show", name="mobile_articles_show")

Both routes используютthe same action : ArticlesController: showAction (), но должен отображать 2 разных шаблона (для мобильных и обычных пользователей).

show.html.twig
mobile.show.html.twig

Я не хочу использовать оператор if или что-то еще в моем контроллере, поэтому я создал слушатель (аналогично функции preExecute)

Вот часть или мояconfig.yml это определяет мойlistener

services:
    controller.pre_execute_listener:
        class: MyProject\MyBundle\Listener\ControllerListener
        arguments: ["@security.context", "@doctrine", "@router", "@session"]
        tags:- { name: kernel.event_listener, event: kernel.controller, method: preExecute }

Я думал о том, чтобы сделать что-то подобное в слушателеpreExecute function:

if(substr($route,0,7) == 'mobile_'){
    $view = 'mobile.'.$view;
}

К сожалению, я не могу найти способ получить$view или обновите представление «на лету» непосредственно перед его отображением.

Я надеюсь, что мой вопрос достаточно ясен, заранее спасибо, любая идея приветствуется :)

J.

Ответы на вопрос(4)

Ваш ответ на вопрос