variable how comment php symfony twig

php - how - twig parent block



Symfony2-Twig-¿Cómo puedo enviar parámetros a la plantilla principal? (2)

Aquí hay un ejemplo simple:

base.html.twig :

{# base.html.twig #} ... <ul> <li{% if menu_selected|default(''one'') == ''one'' %} class="selected"{% endif %}>One</li> <li{% if menu_selected == ''two'' %} class="selected"{% endif %}>Two</li> <li{% if menu_selected == ''three'' %} class="selected"{% endif %}>Three</li> </ul> ...

page2.html.twig :

{# page2.html.twig #} {% extends ''YourBundle::base.html.twig'' %} {% set menu_selected = ''two'' %}

Salida del renderizado page2.html.twig:

<ul> <li>One</li> <li class="selected">Two</li> <li>Three</li> </ul>

Estoy trabajando en un proyecto PHP usando Symfony2 con plantillas Twig, y no puedo encontrar una solución para este problema.

Tengo un paquete de administrador y todas las plantillas se extienden desde la base de administración que tiene una plantilla maestra con un menú.

Necesito configurar la pestaña actual del menú en la plantilla base de la página para seleccionar cuando el usuario está en esa página.

¿Hay alguna forma de pasar el parámetro a la plantilla base a través de extends ?


Una mejor forma que acabo de descubrir es el enfoque básico al verificar la ruta para el nombre de la ruta de acceso directo:

<li class="{% if app.request.attributes.get(''_route'') == ''homepage'' %}active{% endif %}">Home</li>

O bien, otra forma es nombrar todos los nombres de acceso directo a la ruta según el grupo al que pertenece. Por ejemplo, todas las rutas desde su controlador de productos comienzan con "producto _...." y luego en la plantilla puede hacer esto:

<li class="{% if app.request.attributes.get(''_route'') starts with ''product'' %}active{% endif %}">