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.