Back to Twig

Coding Standards

doc/coding_standards.rst

3.24.03.3 KB
Original Source

Coding Standards

.. note::

The `Twig CS fixer tool <https://github.com/VincentLanglet/Twig-CS-Fixer>`_
uses the coding standards described in this document to automatically fix
your templates.

When writing Twig templates, we recommend you to follow these official coding standards:

  • Put exactly one space after the start of a delimiter ({{, {%, and {#) and before the end of a delimiter (}}, %}, and #}) if the content is non empty:

    .. code-block:: twig

    {{ user }} {# comment #} {##} {% if user %}{% endif %}

    When using the whitespace control character, do not put any spaces between it and the delimiter:

    .. code-block:: twig

    {{- user -}} {#- comment -#} {#--#} {%- if user -%}{%- endif -%}

  • Put exactly one space before and after the following operators: comparison operators (==, !=, <, >, >=, <=), math operators (+, -, /, *, %, //, **), logic operators (not, and, or), ~, is, in, and the ternary operator (?:):

    .. code-block:: twig

    {{ 1 + 2 }} {{ first_name ~ ' ' ~ last_name }} {{ is_correct ? true : false }}

  • Put exactly one space after the : sign in mappings and , in sequences and mappings:

    .. code-block:: twig

    [1, 2, 3] {'name': 'Fabien'}

  • Do not put any spaces after an opening parenthesis and before a closing parenthesis in expressions:

    .. code-block:: twig

    {{ 1 + (2 * 3) }}

  • Do not put any spaces before and after string delimiters:

    .. code-block:: twig

    {{ 'Twig' }} {{ "Twig" }}

  • Do not put any spaces before and after the following operators: |, ., .., []:

    .. code-block:: twig

    {{ name|upper|lower }} {{ user.name }} {{ user[name] }} {% for i in 1..12 %}{% endfor %}

  • Do not put any spaces before and after the parenthesis used for filter and function calls:

    .. code-block:: twig

    {{ name|default('Fabien') }} {{ range(1..10) }}

  • Do not put any spaces before and after the opening and the closing of sequences and mappings:

    .. code-block:: twig

    [1, 2, 3] {'name': 'Fabien'}

  • Put exactly one space before and after = in macro argument declarations:

    .. code-block:: twig

    {% macro html_input(class = "input") %}

  • Put exactly one space after the : sign when using named arguments:

    .. code-block:: twig

    {{ html_input(class: "input") }}

  • Use snake case for all variable names (provided by the application and created in templates), function/filter/test names, argument names and named arguments:

    .. code-block:: twig

    {% set name = 'Fabien' %} {% set first_name = 'Fabien' %}

    {{ 'Fabien Potencier'|to_lower_case }} {{ generate_random_number() }}

    {% macro html_input(class_name) %}

    {{ html_input(class_name: 'pwd') }}

  • Indent your code inside tags (use the same indentation as the one used for the target language of the rendered template):

    .. code-block:: twig

    {% block content %} {% if true %} true {% endif %} {% endblock %}

  • Use : instead of = to separate argument names and values:

    .. code-block:: twig

    {{ data|convert_encoding(from: 'iso-2022-jp', to: 'UTF-8') }}