Ответ 1
Несчастливый ответ 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 %}