twig
Основной синтаксис шаблона
Поиск…
Вступление
Объяснение основных синтаксических конструкций шаблонов
Доступ к переменным
В шаблонах 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
echoyes
else echono
{{ foo ?: 'no' }}
или же
{{ foo ? foo : 'no' }}
Оценивает:
если
foo
echo it, else echono
{{ foo ? 'yes' }}
или же
{{ foo ? 'yes' : '' }}
Оценивает:
if
foo
echoyes
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>' #}