Symfony2: Ändern der gerenderten Ansicht, die einen listener

Möchte ich zur Darstellung unterschiedlicher Ansichten in einem anderen Kontext in meinem Symfony2-Projekt.
Ich bin über mehrere Routen für das gleiche Taten, und ich möchte das Rendern einer anderen Seite (Ansicht), aber mit dem gleichen controller.
Ich habe zum Beispiel:

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

Beide Routen mit die gleiche Aktion : ArticlesController:showAction(), aber Rendern soll 2 verschiedene templates (für mobile Benutzer und Stammgäste sind).

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

Möchte ich nicht verwenden Sie eine if-Anweisung oder was auch immer in meinem controller, so dass ich erstellt ein listener (ähnlich einem preExecute-Funktion)

Ist hier ein Teil oder mein config.yml, die definiert meine Zuhörer

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 }

Ich dachte an etwas wie, dass in den Hörer preExecute-Funktion:

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

Leider kann ich nicht einen Weg finden, wie $view oder die Aktualisierung der Ansicht "on-the-fly", kurz bevor Sie dargestellt werden.

Ich hoffe meine Frage ist klar genug, vielen Dank im vorraus, jede Idee ist willkommen 🙂

J.

Schreibe einen Kommentar