button_primary宏如何button在Twig引擎中调用宏?我已经尝试过这个解决方案,但它不起作用,它说功能"按钮"不存在:
{% macro button(label, type, size) %}
{% set type = type|default('default') %}
{% set size = size|default('large') %}
{% set cls = ['btn'] %}
<a href="#" class="{{ cls|join(' ') }}">{{ label }}</a>
{% endmacro %}
{% macro button_primary(label, size) %}
{{ button(label, 'primary', size) }}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
小智 64
不幸的是Gremo的答案有效,但不是正确的方法.
当您在模板中定义要使用它的宏时,可能很想通过_self.input()直接调用宏而不是导入它; 即使似乎工作,这只是当前实现的副作用,它将不再适用于Twig 2.x.
http://twig.sensiolabs.org/doc/tags/macro.html
正确的方式:
{% macro input(name, value, type, size) %}
<input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
{% endmacro %}
{% macro wrapped_input(name, value, type, size) %}
{% import _self as forms %}
<div class="field">
{{ forms.input(name, value, type, size) }}
</div>
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
对自己的回答:这是一个非常新的功能添加,请参阅此链接。无论如何,解决方案正在使用_self:
{% macro button_primary(label, size) %}
{{ _self.button(label, 'primary', size) }}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)