2012-05-20 20 views
5

Sono molto di nuovo da Symfony2 e ho bisogno di essere in grado di testare il percorso attuale in TWIG così posso visualizzare sottomenu in un modello che ha reso come:Come posso ottenere l'URL o il percorso corrente in TWIG?

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

All'interno dei modelli della barra laterale Ho provato ad utilizzare il seguente ma getta un errore:

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

Qual è il modo corretto di fare quello che sto cercando di realizzare?

+0

Si dovrebbe verificare [KnpMenuBundle] (https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/index.md), risolve un sacco di vostri problemi di menu legati. – Maerlyn

risposta

22

Il controllo che si desidera fare non appartiene a una vista. Le viste dovrebbero occuparsi solo di visualizzare, non di fare alcun tipo di logica.

Effettua il check in del controller e lo memorizza in una variabile, passa questa variabile alle tue visualizzazioni e controlla il valore di questa variabile.
Se si desidera eseguire questa operazione su ogni azione, dare un'occhiata a kernel.controller event.

Se si desidera eseguire comunque la visualizzazione, è sufficiente confrontare app.request.attributes.get('_route') per il percorso desiderato. Non capisco perché hai inserito path().

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

il percorso era qualcosa che ho rimosso da google ma anche se provo a stampare ** {{app.request.attributes.get ('_ route')}} ** l'output dice ** _ internal ** e I can ' t sembrano ottenere il nome della rotta nella vista che è ciò di cui ho bisogno visto che ho 10 modelli di ramoscelli che andranno nella mia barra laterale e visualizzeranno sottomenu in base alla rotta corrente – MikeGA

+0

Qual è l'output di '$ this-> getRequest() - > attributes-> get ('_ route') 'nel controller? –

+0

Mi dà il nome della rotta corrente proprio come mi aspetto, MA non penso che dovrei farlo in ogni controller avrò circa 20, non pensi che dovrebbe essere controllato nel mio modello di barra laterale? – MikeGA

Problemi correlati