Symfony2: Alterar a visualização renderizada com um ouvinte
Eu gostaria de renderizar diferentes visões em contextos diferentes no meu projeto Symfony2. Estou usando várias rotas para as mesmas ações e gostaria de renderizar uma página diferente (exibição), mas com o mesmo controlador. Por exemplo eu tenho:
@Route("/articles/show", name="articles_show")
@Route("/mobile/articles/show", name="mobile_articles_show")
Ambas as rotas estão usandoa mesma ação : ArticlesController: showAction (), mas deve renderizar dois modelos diferentes (para usuários móveis e regulares).
show.html.twig
mobile.show.html.twig
Eu não quero usar uma instrução if ou qualquer outra coisa no meu controlador, então criei um ouvinte (semelhante a uma função preExecute)
Aqui é uma parte ou minhaconfig.yml que define minhaouvinte
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 }
Eu estava pensando em fazer algo assim no ouvintefunção pré-execução:
if(substr($route,0,7) == 'mobile_'){
$view = 'mobile.'.$view;
}
Infelizmente não consigo encontrar uma maneira de obter$ view ou atualize a visualização "on the fly", pouco antes de ser renderizada.
Espero que minha pergunta seja clara o suficiente, obrigado antecipadamente, qualquer idéia é bem vinda :)
J.