Поиск…


Вступление

Объяснение основных синтаксических конструкций шаблонов

Доступ к переменным

В шаблонах Twig можно получить доступ к переменным, используя двойную фигурную фигурную скобку {{ variableName }} .

Основной пример приветствия пользователя

<!DOCTYPE html>
<html>
  <body>
    <span>Hello {{ name }}</span>
  </body>
</html>

Доступ к элементам массива

Twig в качестве параметра может принимать массив. Чтобы получить доступ к определенному элементу массива, вы можете использовать стандартную запись в виде скобок для php-массива {{ array[key] }} .

Предыдущий пример изменен для использования массива в качестве параметра

<!DOCTYPE html>
<html>
  <body>
    <span>Hello {{ user['name'] }}</span>
  </body>
</html>

Доступ к свойствам объекта

Объекты также могут быть переданы в качестве параметра в шаблон. Нотация «Dot» (.) Используется для доступа к определенным свойствам объекта {{ object.propertyName }} .

Тот же пример с объектом как параметр

<!DOCTYPE html>
<html>
  <body>
    <span>Hello {{ user.name }}</span>
  </body>
</html>

фильтры

Переменные могут быть изменены с использованием фильтров. Чтобы применить фильтр к переменной, следуйте за именем переменной с помощью pipe | и имя фильтра:

{{ variable|filterName }}

Например, чтобы отобразить значение переменной в конструкторе использования верхнего регистра.

{{ variable|upper }}

Фильтры могут быть параметризованы. Параметры фильтра передаются в круглых скобках как список, разделенный запятыми (,):

{{ variable|filterName(param1, param2, ...) }}

Чтобы округлить число до заданной точности, мы можем использовать фильтр round , он принимает до 2 параметров. Первый определяет точность (по умолчанию: 0), второй метод округления (по умолчанию: общий).

Чтобы округлить число до 1 десятичного разряда с использованием общего метода, вы можете использовать {{ number|round(1, 'common') }} или {{ number|round(1) }} поскольку общий метод по умолчанию.

Фильтры также могут использоваться для встроенных объектов и переменных массива:

{{ array['key'] | upper }} {{ object.text | upper }}

Фильтры также могут быть объединены:

{% set array = "3,1,2"|split(',') %}

{{ array | sort | first }}

Список основных фильтров доступен здесь.

Условные блоки

Части шаблона могут отображаться условно. If для этой цели используется оператор. Это похоже на инструкцию if в программировании языков. Содержимое блока выполняется / отображается, если выражение принимает значение true .

{% if enabled == false %}
    Disabled
{% endif %}

Отключено будет отображаться только в том случае, если enabled будет равным false .

Несколько ветвей можно создать с помощью elseif и else .

{% if temperature < 10 %}
    It's cold
{% elseif temperature < 18 %}
    It's chilly
{% elseif temperature < 24 %}
    It's warm
{% elseif temperature < 32 %}
    It's hot
{% else %}
    It's very hot
{% endif %}

Для цикла

Для циклов может быть действительно полезно в TWIG, что позволяет создавать динамические веб-страницы данных.

Скажем, мы создаем простой массив чисел:

{% set array = "3,1,2" %}

Затем мы можем перебрать массив и распечатать все, что захотим. Любые данные в блоке массива будут выводиться относительно количества данных в массиве. В этом примере будут напечатаны три элемента h1 с объединенными данными массива.

{% for current in array %}
    <h1>This is number {{ current }} in the array </h1>
{% endear %}

Обратите внимание, что {{ current }} использовался для доступа к данным, а не к версии array

См. Эту работу: https://twigfiddle.com/mxwkea/2

Еще одним примером этого может быть использование объектов. Например, предположим, что у нас есть объект Entity с полем «имя» вместе с его соответствующими геттерами и сеттерами . Если число этих объектов также хранится в массиве, к ним можно получить доступ, как и любые другие объекты в TWIG:

{% for currentObject in ArrayOfObjects %}
    {{ currentObject.name }}
{% endfor %}

См. Это работа с данными JSON: https://twigfiddle.com/mxwkea

Тернарный оператор (сокращенный вариант If-Then-Else) и оператор Null-Coalescing

Тройной оператор ( ?:

Поддержка расширенного тернарного оператора была добавлена ​​в Twig 1.12.0 .

{{ foo ? 'yes' : 'no' }}

Оценивает:

if foo echo yes else echo no


{{ foo ?: 'no' }}

или же

{{ foo ? foo : 'no' }}

Оценивает:

если foo echo it, else echo no


{{ foo ? 'yes' }}

или же

{{ foo ? 'yes' : '' }}

Оценивает:

if foo echo yes else echo nothing


Оператор нулевой коалесценции ( ??:

{{ foo ?? 'no' }}

Оценивает:

Возвращает значение foo , если она определена и не пуст, no иначе

Обработка пробелов

Для того, чтобы удалить пробелы (пробелы, табуляции, новой строки ...) между HTML - теги использовать spaceless тег:

{% spaceless %}

    <div>
        <span>foo bar </span>
    </div>
{% endspaceless %}
{# produces output <div><strong>foo bar </strong></div> #}

Если вам нужно удалить пробелы на уровне каждого тега, используйте модификатор управления пробелами, т.е. дефис (-). Используя его, вы можете обрезать ведущие и / или конечные пробелы:

{% set value = 'foo bar' %}

<span>  {{- value }}  </span> 
{# produces '<span>foo bar  </span>' #}

<span>  {{ value -}}  </span> 
{# produces '<span>  foo bar</span>' #}

<span>  {{- value -}}  </span> 
{# produces '<span>foo bar</span>' #}

<span {%- if true  %} class="foo"{% endif %}>
{# produces '<span class="foo">' #}

<span {%- if false %} class="foo"{% endif %}>
{# produces '<span>' #}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow