Twig cuenta con el soporte necesario para poner en macros el código usado frecuentemente macros. Estas macros pueden estar en diferentes plantillas y se importan desde allí.
Hay dos formas de importar plantillas. Puedes importar la plantilla completa en una variable o solicitar macros específicas de ella.
Imagina que tienes un módulo auxiliar que reproduce formularios (llamado formularios.html):
{% macro input(name, value, type, size) %}
<input type="{{ type|default('text') }}"
name="{{ name }}"
value="{{ value|e }}"
size="{{ size|default(20) }}" />
{% endmacro %}
{% macro textarea(name, value, rows) %}
<textarea name="{{ name }}"
rows="{{ rows|default(10) }}"
cols="{{ cols|default(40) }}">
{{ value|e }}
</textarea>
{% endmacro %}
La forma más fácil y flexible es importar todo el módulo en una variable. De esa manera puedes acceder a los atributos:
{% import 'formularios.html' as forms %}
<dl>
<dt>Username</dt>
<dd>{{ forms.input('username') }}</dd>
<dt>Password</dt>
<dd>{{ forms.input('password', null, 'password') }}</dd>
</dl>
<p>{{ forms.textarea('comentario') }}</p>
Alternativamente, puedes importar nombres desde la plantilla al espacio de nombres actual:
{% from 'formularios.html' import input as campo_input, textarea %}
<dl>
<dt>Username</dt>
<dd>{{ input_field('username') }}</dd>
<dt>Password</dt>
<dd>{{ input_field('password', '', 'password') }}</dd>
</dl>
<p>{{ textarea('comment') }}</p>
Truco
Para importar macros desde el archivo actual, usa la variable especial _self para la fuente.