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


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 administración y todas las plantillas se extienden desde la base de administración que tiene una plantilla maestra con un menú.

Necesito establecer la pestaña actual del menú en la plantilla base de la página a seleccionada 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?

Author: Paulpro, 2013-06-22

2 answers

Aquí hay un ejemplo simple:

Base.HTML.ramita :

{# 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>
...

Página 2.HTML.ramita :

{# page2.html.twig #}
{% extends 'YourBundle::base.html.twig' %}

{% set menu_selected = 'two' %}

La Salida de la representación page2.HTML.ramita:

<ul>
  <li>One</li>
  <li class="selected">Two</li>
  <li>Three</li>
</ul>
 72
Author: Paulpro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-22 16:28:52

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

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

U otra forma es nombrar todos los nombres de atajos de ruta de acuerdo con el grupo al que pertenece. Por ejemplo, todas las rutas de su controlador de productos comienzan con " product_...."y luego en la plantilla puedes hacer esto:

<li class="{% if app.request.attributes.get('_route') starts with 'product' %}active{% endif %}">
 2
Author: pogeybait,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-04 13:29:02