mirror of
https://github.com/twigphp/Twig.git
synced 2026-08-17 08:50:50 +00:00
136 lines
3.3 KiB
ReStructuredText
136 lines
3.3 KiB
ReStructuredText
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') }}
|