Twig (template engine)

From The Right Wiki
Jump to navigationJump to search
Twig
Original author(s)Armin Ronacher,[1] Fabien Potencier
Developer(s)Symfony SAS
Initial releaseOctober 12, 2009 (2009-10-12)
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.[2] It's an open source product[3] 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.[4] The same template language is used by the Nunjucks template engine, thus Nunjucks is also supported by the following tools.

Features

  • Complex control flow
  • Automatic escaping
  • Template inheritance
  • Variable filters[5]
  • i18n support (gettext)
  • Macros
  • Fully extendable[2][6]

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

  • Eclipse via the Twig plugin
  • Komodo and Komodo Edit via the Twig highlight/syntax check mode
  • NetBeans via the Twig syntax plugin (until 7.1, native as of 7.2)
  • PhpStorm (native as of 2.1)
  • IntelliJ IDEs, including WebStorm, via a plugin

And the text editors:

Syntax

Twig defines three kinds of delimiters:

  • {{ ... }}, to print the content of variables or the result of evaluating an expression (e.g.: an inherited Twig template with {{ parent() }}).
  • {# ... #}, to add comments in the templates. These comments aren't included in the rendered page.
  • {% ... %}, to execute statements, such as for-loops.
    • {% set foo = 'bar' %}, to assign.[7]
    • {% if i is defined and i == 1%} ... {% endif %}: condition.
    • {% for i in 0..10 %} ... {% endfor %}: counter in a loop.

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,[2] 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[5]
[] 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:[5]

  • capitalize: changes a string's first letter to capital.
  • upper: changes a whole string to capital.
  • first: displays the first line of an array.
  • length: returns a variable size.

Special variables

  • loop contains the current loop information. For example loop.index corresponds to the number of iterations which have already occurred.
  • The global variables begin with underscores. For example:
    • _route (URL part located after the domain)
    • _self (current file name)
    So, to the a page route: {{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}
  • The CGI environment variables, such as {{ app.request.server.get('SERVER_NAME') }}.

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". GitHub. August 13, 2019.
  2. 2.0 2.1 2.2 2.3 "Twig for Template Designers - Documentation - Twig - The flexible, fast, and secure PHP template engine". Twig.
  3. "twigphp/Twig". GitHub. July 1, 2020.
  4. "Symfony2 Documentation — Documentation". Twig. August 5, 2010. Archived from the original on 2010-08-05.
  5. 5.0 5.1 5.2 "Filters - Documentation - Twig - The flexible, fast, and secure PHP template engine". Twig.
  6. "Extending Twig - Documentation - Twig - The flexible, fast, and secure PHP template engine". Twig.
  7. "set - Documentation - Twig - The flexible, fast, and secure PHP template engine". Twig.

External links