2012-05-20 1 views
5

Je suis très nouveau pour Symfony2 et je dois pouvoir tester la route actuelle TWIG donc je peux afficher des sous-menus dans un modèle qui est rendu comme:Comment puis-je obtenir l'URL ou l'itinéraire actuel dans TWIG?

{% render "CPAdminBundle:Messages:sidebarMenu" %} 
{% render "CPAdminBundle:Readings:sidebarMenu" %} 

Dans les modèles de la barre latérale, j'ai essayé d'utiliser ce qui suit, mais il génère une erreur:

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

Quelle est la bonne façon de faire ce que j'essaie d'accomplir?

+0

Vous devriez vérifier [KnpMenuBundle] (https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/index.md), il permet de résoudre beaucoup de vos problèmes liées au menu. – Maerlyn

Répondre

22

La vérification que vous souhaitez effectuer n'appartient pas à une vue. Les vues doivent uniquement prendre en charge l'affichage, ne pas faire de logique. Faites le contrôle dans votre contrôleur et stockez-le dans une variable, transmettez cette variable à vos vues, et vérifiez la valeur de cette variable là.
Si vous voulez faire cela à chaque action, donnez un coup d'oeil au kernel.controller event.

Si vous voulez quand même le faire dans la vue, comparez simplement app.request.attributes.get('_route') à l'itinéraire que vous voulez. Je ne comprends pas pourquoi vous mettez path().

{% if app.request.attributes.get('_route') == 'my_route' %} 
{% endif %} 
+0

le chemin était quelque chose que je suis sorti de google mais même si j'essaie d'imprimer ** {{app.request.attributes.get ('_ route')}} ** la sortie dit ** _ interne ** et je peux ' t semble obtenir le nom de la route dans la vue qui est ce dont j'ai besoin depuis que j'ai comme 10 modèles de brindilles qui iront dans ma barre latérale et afficher les sous-menus selon l'itinéraire actuel – MikeGA

+0

Quelle est la sortie de $ this- getRequest() - > attributes-> get ('_ route') 'dans le contrôleur? –

+0

Il me donne le nom de la route actuelle comme je l'espère MAIS je ne pense pas que je devrais le faire dans tous les contrôleurs que je vais avoir environ 20, ne pensez-vous pas qu'il devrait être vérifié dans mon modèle de barre latérale? – MikeGA