Twig
Original author(s)Armin Ronacher,[1] Fabien Potencier
Developer(s)Symfony SAS
Initial releaseOctober 12, 2009 (2009-10-12)
Stable release
3.8.0[2] / 21 November 2023; 59 days ago (21 November 2023)
Repository
Written inPHP
Operating systemCross-platform
TypeTemplate engine
LicenseBSD License
Websitetwig.symfony.com

Twig is a template engine for the PHP programming language. Its syntax originates from Jinja and Django templates.[3] It's an open source product[4] licensed under a BSD License and maintained by Fabien Potencier. The initial version was created by Armin Ronacher. Symfony PHP framework comes with a bundled support for Twig as its default template engine since version 2.[5]

The same template language is used by the Nunjucks template engine, thus Nunjucks is also supported by the following tools.

Features

Twig is supported by the following integrated development environments:[3]

And the text editors:

Syntax

Twig defines three kinds of delimiters:

The apostrophe (') is the escape character.

To create an iterative array:

{% set myArray = [1, 2] %}

An associative array:

{% set myArray = {'key': 'value'} %}

Operators precedence

The operators precedence is,[3] from the less to more priority:

Operator Role
b-and Bitwise AND
b-xor Bitwise XOR
b-or Bitwise OR
or Or
and And
== Is equal?
!= Is different?
< Inferior
> Superior
>= Superior or equal
<= Inferior or equal
in Into
matches Corresponds
starts with Begins by
ends with Finishes by
.. Sequence (ex: 1..5)
+ Plus
- Less
~ Concatenation
* Multiplication
/ Division
// Division rounded to lower
% Modulo
is Test (ex: is defined or is not empty)
** Power
| Filter[6]
[] Array entry
. Attribute or method from an object (ex: country.name)

Filters

The filters provide some treatments on an expression, when placed after it, separated by pipes. For example:[6]

Special variables

Example

The example below demonstrates some basic features of Twig.

{% extends "base.html" %}
{% block navigation %}
    <ul id="navigation">
    {% for item in navigation %}
        <li>
            <a href="(( item.href ))">
                {% if item.level == 2 %}&nbsp;&nbsp;{% endif %}
                (( item.caption|upper ))
            </a>
        </li>
    {% endfor %}
    </ul>
{% endblock navigation %}

See also

References

  1. ^ "mitsuhiko/twig". August 13, 2019 – via GitHub.
  2. ^ "Release 3.8.0". 21 November 2023. Retrieved 19 December 2023.
  3. ^ a b c d "Twig for Template Designers - Documentation - Twig - The flexible, fast, and secure PHP template engine". twig.symfony.com.
  4. ^ "twigphp/Twig". July 1, 2020 – via GitHub.
  5. ^ "Symfony2 Documentation — Documentation". August 5, 2010. Archived from the original on 2010-08-05.
  6. ^ a b c "Filters - Documentation - Twig - The flexible, fast, and secure PHP template engine". twig.symfony.com.
  7. ^ "Extending Twig - Documentation - Twig - The flexible, fast, and secure PHP template engine". twig.symfony.com.
  8. ^ "set - Documentation - Twig - The flexible, fast, and secure PHP template engine". twig.symfony.com.