with template inside php symfony templates twig

php - template - Twig Anexar Contenido a Bloquear



twig manual (3)

En las plantillas de ramitas, ¿es posible agregar contenido a un bloque?

Por ejemplo, considere los archivos de plantilla a continuación.

layout.html.twig

<html> <head> <style> {% block css %}{% endblock css %} </style> </head> <body> {% block content %}{% endblock content %} </body> </html>

inner.html.twig

{% block css %} a { color: #fff; } body { background: #f00; } {% endblock css %} {% block content %} Some contents here... {% include ''myWidget.html.twig'' %} {% endblock content %}

myWidget.html.twig

{% block css %} div a { color: #777; } {% endblock css %} {% block content %} <div><a>myWidget content here...</a></div> {% endblock content %}

Observe el bloque css ... Lo que estoy tratando de lograr es que quiero que cada contenido del bloque css se agregue al bloque css de layout.html.twig. Por lo tanto, el resultado final debe ser:

<html> <head> <style> a { color: #fff; } body { background: #f00; } div a { color: #777; } </style> </head> <body> Some contents here... <div><a>myWidget content here...</a></div> </body> </html>


Acceso directo para agregar / añadir contenido a bloques con poco contenido, por ejemplo, un título de página

base.html.twig

... <title>{% block title %}MyApp{% endblock %}</title> ...

plantilla extendiendo diseño base

{% extends ''::base.html.twig'' %} {% block title ''Page1 - ''~parent() %} {# prepend #} {% block title parent()~'' - Page1'' %} {# append #}


Esto debería funcionar:

{% block css %} {{ parent() }} div a { color: #777; } {% endblock css %} {% block content %} <div><a>myWidget content here...</a></div> {% endblock content %}


Llamar a parent () en la plantilla secundaria funciona, pero cada hijo debe aceptar explícitamente la herencia del padre. También puede optar por imponer esta herencia mediante el uso de un subbloque en su lugar.

inner.html.twig

{% block css %} a { color: #fff; } body { background: #f00; } {% block css_custom %}{% endblock css_custom %} {% endblock css %}

myWidget.html.twig

{% block css_custom %} div a { color: #777; } {% endblock css_custom %}