a Sensio Labs Product

The flexible, fast, and secure
template engine for PHP

Tags » import

Questions & Feedback

License

Twig documentation is licensed under the new BSD license.

importΒΆ

Twig supports putting often used code into macros. These macros can go into different templates and get imported from there.

There are two ways to import templates. You can import the complete template into a variable or request specific macros from it.

Imagine we have a helper module that renders forms (called forms.html):

1
2
3
4
5
6
7
{% 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, cols) %}
    <textarea name="{{ name }}" rows="{{ rows|default(10) }}" cols="{{ cols|default(40) }}">{{ value|e }}</textarea>
{% endmacro %}

The easiest and most flexible is importing the whole module into a variable. That way you can access the attributes:

1
2
3
4
5
6
7
8
9
{% import 'forms.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('comment') }}</p>

Alternatively you can import names from the template into the current namespace:

1
2
3
4
5
6
7
8
9
{% from 'forms.html' import input as input_field, textarea %}

<dl>
    <dt>Username</dt>
    <dd>{{ input_field('username') }}</dd>
    <dt>Password</dt>
    <dd>{{ input_field('password', '', 'password') }}</dd>
</dl>
<p>{{ textarea('comment') }}</p>

Tip

To import macros from the current file, use the special _self variable for the source.

This website is powered by PHP and Twig. The Twig logo is © 2010-2012 Sensio Labs