Предположим, у меня есть два шаблона Twig, содержащие только макросы: Как сделать один шаблон макроса Twig наследовать другой и использовать макросы в том же пространстве имен?
<!-- macros_a.html.twig -->
{% macro help_icon(msg) -%}
<i class="glyphicon glyphicon-question-sign nf-icon-help" data-toggle="tooltip" title="{{ msg }}"></i>
{%- endmacro %}
и
<!-- macros_b.html.twig -->
{% macro hash(val) -%}
<span class="nf-hash">{{ val }}</span>
{%- endmacro %}
В другом шаблоне я хочу использовать любой из этих макросов, как это:
<!-- 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>
Что Я хочу, чтобы macros_b.html.twig
наследовал макросы от macros_a.html.twig
и сделал доступными все макросы t через одну переменную (macros
).
Как я пытался решить эту проблему, чтобы использовать что-то вроде include
, import
, extends
, я думаю, что я попробовал все Twig функцию/тэг, несколько связанных. Я также пытался использовать blocks
, но это не работает. Макросы в macros_a.html.twig
просто недоступны (сообщение об ошибке: Attempted to call an undefined method named "gethash" of class ..etc..
).
Кто-нибудь знает, как сделать эту работу? Заранее спасибо!