/ / ¿Cómo hacer que una plantilla de macro Twig herede otra y poder usar macros en el mismo espacio de nombres? - herencia, importación, macros, incluir, ramita

¿Cómo hacer que una plantilla macro de Twig herede otra y pueda usar macros en el mismo espacio de nombres? - herencia, importación, macros, incluir, rama

Supongamos que tengo dos plantillas Twig que contienen solo macros:

<!-- macros_a.html.twig -->
{% macro help_icon(msg) -%}
<i class="glyphicon glyphicon-question-sign nf-icon-help" data-toggle="tooltip" title="{{ msg }}"></i>
{%- endmacro %}

y

<!-- macros_b.html.twig -->
{% macro hash(val) -%}
<span class="nf-hash">{{ val }}</span>
{%- endmacro %}

En otra plantilla quiero usar cualquiera de estas macros como esta:

<!-- some_page.html.twig -->
{% import "@App/macros_b.html.twig" as macros %}

<p>Your hash: {{ macros.hash("90a11a5d3268") }}<p>

<p>This is some fuzzy text that needs a help icon. {{ macros.help_icon("Here is some helpfull text for you.") }}</p>

Lo que quiero es macros_b.html.twig heredar las macros de macros_a.html.twig y hacer que todas las macros sean accesibles a través de una variable (macros)

La forma en que traté de resolver esto es usar algo como include, import, extendsCreo que probé todas las funciones / etiquetas de Twig que están algo relacionadas. También intenté usar blocks pero eso no funciona tampoco. Las macros en macros_a.html.twig simplemente no está disponible (mensaje de error: Attempted to call an undefined method named "gethash" of class ..etc..)

¿Alguien sabe cómo hacer que esto funcione? ¡Gracias por adelantado!

Respuestas

0 para la respuesta № 1

No hay herencia posible con macros

Las macros están hechas para hacer contenido de pequeña generación.

Si desea que estén disponibles en Everyscope independientemente del archivo de macros, debería utilizar personalización personalizada. función