/ / Jak zrobić jeden szablon makro Twig odziedziczyć inny i być w stanie używać makr w tej samej przestrzeni nazw? - dziedziczenie, import, makra, włącz, gałązka

Jak zrobić jeden szablon makro Twig odziedziczyć inny i być w stanie używać makr w tej samej przestrzeni nazw? - dziedziczenie, import, makra, włącz, gałązka

Załóżmy, że mam dwa szablony Twig zawierające tylko makra:

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

i

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

W innym szablonie chcę użyć dowolnego z poniższych makr:

<!-- 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>

Chcę tego macros_b.html.twig dziedziczyć makra macros_a.html.twig i udostępnić wszystkie makra za pomocą jednej zmiennej (macros).

Sposób, w jaki próbowałem to rozwiązać, polega na użyciu czegoś podobnego include, import, extendsMyślę, że wypróbowałem każdą funkcję / znacznik Twig, który jest nieco spokrewniony blocks ale to nie działa ani. Makra w macros_a.html.twig po prostu nie są dostępne (komunikat o błędzie: Attempted to call an undefined method named "gethash" of class ..etc..).

Czy ktoś wie jak to zrobić? Z góry dziękuję!

Odpowiedzi:

0 dla odpowiedzi № 1

W makrach nie ma możliwości dziedziczenia

Makra są tworzone w celu generowania treści małej generacji.

Jeśli chcesz, aby były one dostępne w każdym kodzie niezależnie od pliku makra, powinieneś raczej użyć niestandardowego funkcjonować