Руководства, Инструкции, Бланки

Twig шаблонизатор русское руководство img-1

Twig шаблонизатор русское руководство

Категория: Руководства

Описание

RetailCRM Документация

Twig-шаблоны используются для подготовки шаблонов печатных форм, писем, SMS и оповещений. Представляют из себя html-верстку с вкраплениями twig-разметки, поэтому для создания шаблонов необходимы базовые знания html и twig. В системе, как правило, есть ряд заранее подготовленных шаблонов, которые вы можете брать за основу.

В twig есть следующие основные конструкции языка:

  • <<. >> — вывод значения переменной
  • <%. %> — функциональный блок
  • <#. #> — комментарии

Внутри функциональных блоков используются теги языка в виде <% tag %>. <% endtag %>.

  • do — выполняет произвольную операцию;
  • for — организация цикла;
  • set — устанавливает значение переменной;
  • if — условный оператор, также может быть использован оператор <% else %>.

В официальной документации twig дана более полная информация по работе с шаблонизатором.

Ниже даны справочники по twig-фильтрам, twig-функциям, а также объектам, доступным в шаблонах системы.

Справочник доступных twig-фильтров

Фильтры можно применять к переменным через вертикальную черту. Примеры использования фильтров:

В шаблонах доступна большая часть стандартных фильтров. а также некоторые специальные фильтры. Общий перечень доступных фильтров приведен ниже.

Справочник доступных twig-функций

Пример использования функции range.

Аналогично фильтрам в шаблонах доступна большая часть стандартных функций. а также некоторые специальные функции. Общий перечень доступных функций приведен ниже.

Справочник доступных полей и методов объектов

В шаблон в зависимости от его типа передается определенный набор объектов. Из объектов можно извлекать и выводить данные, обращаясь к полям и методам объектов.

Объекты связаны между собой через поля, т.е. обращаясь к полю одного объекта, можно получить другой объект. В таких случаях описание поля в справочнике является ссылкой на объект, который возвращается при обращении к полю.

Отмена генерации twig-шаблона

Могут возникать ситуации, когда требуется отменить генерацию шаблона. Например, мы на триггере хотим отправлять письмо с товарными рекомендациями, но, если никаких рекомендаций для клиента не найдено, то генерацию шаблона письма и его отправку производить не надо. Для отмены следует использовать тег <% cancel %>.

Если срабатывает <% cancel %>. то в журнале действий это будет зафиксировано:

В теге также можно указать сообщение, которое будет зафиксировано в журнале действий.

Пример использования с указанием сообщения:

В журнале действий в этом случае будет следующее:

В случае отмены генерации шаблона письма, SMS или печатной формы, которые генерируются вручную, пользователю будет выведено сообщение, указанное в теге <% cancel %>.

Часто возникающие проблемы 1. Как вывести в шаблоне значение пользовательского поля заказа

Для вывода данных из пользовательского поля используйте метод getCustomField. Пример:

В примере some_code — символьный код пользовательского поля.

2. Ошибка при попытке вывести поле заказа, содержащее дату

Речь о проблеме в случае, когда вы видите следующее сообщение об ошибке:

Дело в том, что при выводе в twig-шаблоне полей заказа (или клиента), которые содержат дату, требуется применять фильтр date. чтобы указать формат вывода даты.

3. Как вывести текущую дату

Для вывода текущей даты используйте фильтр date следующим образом:

Другие статьи

Как добавить php код в twig шаблонизатор - Stack Overflow на русском

Есть сайт на symfony, который использует twig шаблонизатор. Внутри twiga нельзя писать пхп код, а это очень нужно. Заменить его теми функциями что есть в twig нельзя. Ведь это не что-то нестандартное, должен быть простой способ выполнить пхп и выдать результат в шаблон. Есть:

возможно тут что-то надо изменить?

Что в PHP: Там находится класс, который берёт имя домена и урл и отправляет посредством fsockopen() на удалённый сервер. Думаю, твигом такое сделать нельзя.
UPD: Хочу сделать для этого сервис.
В файле /Resources/config/services.yml :

rsr.sendurl мой добавленный сервис.
По пути Site\RsrSecurityBundle\Service\RsrNwlSystem.php находится мой класс. Как тут указать ключ сервиса, чтобы им воспользоваться в классе вывода основного контента на страницу.

задан 4 июн '15 в 7:26

Создайте новый фильтр, функцию или тег (в зависимости от ваших требований). В Twig это достойно описано в документации

Учитывая изменения в вопросе, поясню. Вы можете создать дополнительный фильтр (назову его urlsend ) и вызывать его в шаблоне для нужных переменных, например

Сам фильтр - это любая функция (или метод), которая получает одно значение на вход и выдает результат "фильтрации". Подключается это очень просто (например ваш фильтр это функция sendURL() :

ответ дан 4 июн '15 в 7:41

Я не совсем понял в документации в каком файле создаются пользовательские фильтры. И почему фильтр а не функцию? По-моему фильтр должен что-то фильтровать или в твиге не обязательно? – Raftko 4 июн '15 в 8:23

Это может быть в любом файле, откуда доступен экземпляр шаблонизатора. Вы можете ничего не фильтровать, просто вернуть то же значение, но перед эти выполнить необходимые вам действия. – tutankhamun 4 июн '15 в 8:26

Twig теги

Другие статьи серии Twig

В этой статье рассмотрим Twig теги - конструкции шаблонизатора, которые выполняют разнообразные задачи, такие как: условные операторы, циклы, экранирование данных, создание макросов, использование наследования шаблонов, запись в переменные и многое другое. В общем виде они записываются с помощью открывающего тега и закрывающего (именуется префиксом end). Закрывающий тег нужен не для всех конструкций. Пример абстрактного тега выглядит так:

Управляющие конструкции: условные операторы и циклы

Тег if в Twig сравним с условным оператором if в PHP. В простейшей форме вы можете использовать его, чтобы проверить выражение на истинность:

Вы также можете проверить массив или строку на существование:

Twig шаблонизатор предполагает дополнительные проверки в условиях:

empty - проверяет, является ли переменная пустой:

even и odd - возвращает true если данное число является четным или нечетным, соответственно:

iterable - проверяет, является ли переменная массивом или объектом (экземпляром класса, имплементирующего интерфейс Traversable):

null - возвращает true, если переменная равна NULL :

constant - проверяет, имеет ли переменная точно такое же значение, как константа. Вы можете использовать либо глобальные константы, либо константы класса:

divisible - проверяет, делится ли переменная на число:

same as - проверяет, указывают ли две переменные на одну ячейку памяти. Аналогичен оператору эквивалентности === в php:

defined - проверяет, определена ли переменная:

В условиях можно использовать логические операторы and, or, not:

В условиях имеется возможность использовать регулярные выражения

Можно также проверить, начинается ли или заканчивается строка с определенного символа:

Также вы можете использовать более сложные выражения if-elseif (кстати switch-case в Twig отсутствует ):

Тег for аналогичен конструкции for в php и осуществляет "перебор" элементов массива или свойств объекта, если объект является экземпляром класса, имплементирующего Traversable интерфейс.

В качестве примера рассмотрим шаблон поля и в нем перебор множественных значений поля:

Переменные, доступные внутри цикла:

  • loop.index - Текущая итерация цикла (начинается с 1)
  • loop.index0 - Текущая итерация цикла (начинается с 0)
  • loop.revindex - Количество итераций с конца цикла (начинается с 1)
  • loop.revindex0 - Количество итераций с конца цикла (начинается с 0)
  • loop.first - Флаг равный True, если текущая итерация является первой
  • loop.last - Флаг равный True, если текущая итерация является последней
  • loop.length - Количество элементов в последовательности
  • loop.parent - Родительский контекст (используется для вложенных циклов)

В отличие от PHP нельзя прервать или продолжить цикл (continue и break). Однако можно создавать правила, позволяющие пропускать элементы по условиям for-if. В примере ниже неактивные пользователи пропускаются в итерациях:

Также в Twig возможна конструкция for-else для выполнения действий, если массив или объект оказался пустым:

В Twig также возможны итерации с перебором и ключей, и значений

Наследование шаблонов в Twig

Наследование шаблонов - одна из самых интересных особенностей в Twig. Наследование позволяет создавать базовые родительские шаблоны, которые потом можно будет использовать в дочерних шаблонах, при этом весь код родительских шаблонов доступен и в дочерних, а кроме того есть возможность переопределять некоторые блоки родительских шаблонов. Рассмотрим теги, которые позволяют реализовать наследование:

Тег extends¶

Рассмотрим использование наследования и тега extends на примере шаблона для блока block.html.twig и его дочерних шаблонов. Базовый родительский шаблон блока содержит код в упрощенном виде:

В шаблоне прописан код, который будет выводиться и в дочерних шаблонах. Содержимое шаблона, которое доступно для переопределения в дочерних шаблонах находится внутри тегов block. У каждой секции block имеется свое имя, которое будет использовано при переопределении. В данном примере есть только один блок с именем content. Весь код вне тегов block будет выведен как есть и его переопределить уже нельзя. Если в дочернем шаблоне вывод блока не будет переопределен, то код блока будет взят из базового шаблона. В качестве дочернего шаблона рассмотрим шаблон для блока с вкладками (в Drupal 8 они вынесены в отдельный блок) block--local-tasks-block.html.twig:

Наследовать шаблоны можно также из модулей и других тем:

При переопределении блока родительского шаблона, содержимое из родительского блока перезаписывается, но если в блоке нужно выводить содержимое родительского блока, то используется Twig функция parent()

Тег block¶

Блоки используются для реализации механизма наследования в качестве заполнителей как в родительском шаблоне, так и в дочерних (подробнее в разделе тега extends ). Имена блоков должны состоять из цифр, букв и символов подчеркивания. Использование тире не допускается.

Макросы в Twig

Макросы можно сравнить с функциями в языках программирования. Они нужны для многократного использования часто используемых частей html кода и при этом макросы могут принимать параметры, что позволяет динамически изменять вставляемый код. Статический же блок с html кодом можно сохранить с помощью тега set. Макросы отличаются от php функций следующими особенностями:

  • аргументы по умолчанию в макросах задаются внутри тела макроса;
  • аргументы в макросах всегда являются опциональными (необязательными);
  • если в макрос передается больше аргументов, чем описано параметров, то все они будут содержаться в переменной varargs.

Как и php функции макросы не имеют доступа к глобальным переменным шаблона. Для передачи переменных из шаблона при необходимости нужно использовать специальная переменную _context.

Тег macro¶

Тег macro определяет новый макрос. В качестве простейшего примера рассмотрим макрос, который рендерит элемент формы input, при этом input type, name, value, size макрос содержит в качестве параметров (type и size задаются по умолчанию):

Далее макрос может быть использован в любом шаблоне. Но перед использованием его нужно будет импортировать с помощью тега import:

Если макрос определен и используется в одном и том же шаблоне, то для его импорта используется специальная переменная _self.

Если нужно использовать макрос в другом макросе, но в том же самом шаблоне, то макрос импортируется локально внутри другого макроса:

В Drupal 8 в шаблоне menu.html.twig макрос menu_links() определяется и используется в одном и том же шаблоне и дополнительно сам макрос используется рекурсивно внутри самого себя для вывода вложенных пунктов меню:

Тег import¶

Тег import импортирует все макросы из указанного шаблона:

Тег from импортирует только указанные макросы из шаблона:

Тег include¶

Тег include включает в себя имя шаблона и возвращает отображаемое содержимое этого файла в текущий шаблон. Все переменные текущего шаблона будут доступны в подключаемых шаблонах. С помощью include можно некоторые блоки кода вынести в отдельные шаблоны:

Можно добавить дополнительные переменные, передавая их после with:

Или можно отключить доступ к контексту путем добавления only.

Вы можете отменить include при помощи инструкции ignore missing, и тогда Twig будет игнорировать подключение несуществующего шаблона. Размещается инструкция ignore missing сразу за именем шаблона:

Можно предоставить и список шаблонов, которые проверяются на предмет существования до включения.

Пример использования include в Drupal 8 можно посмотреть в шаблоне темы Classy links--node.html.twig:

Внутри шаблонов можно создавать переменные с помощью тега set:

С помощью тега set в переменную можно записать блок кода:

Тег spaceless¶

Тег spaceless можно использовать для удаления пробелов между HTML-тегами, а также содержимого внутри HTML-тегов или пробелов в простом тексте:

Тег autoescape¶

В зависимости от того, включено или нет автоматическое экранирование, вы можете отметить фрагмент шаблона для экранирования или же отключить эту функцию, используя тег autoescape (в Drupal 8 автоэкранирование включено в контексте html):

Тег verbatim¶

Тег verbatim маркирует секцию и сообщает шаблонизатору не обрабатывать содержимое блока:

Тег filter¶

Тег filter позволяет применять стандартные фильтры шаблонизатора Twig для блоков данных шаблонов. Просто разместите код внутри секции "filter":

Можно также создавать комбинации фильтров:

Если в теге используется фильтры escape или e, то drupal их заменит на свой фильтр drupal_escape .

Тег do работает так же, как стандартное выражение с переменной << var >>. с той разницей, что ничего не выводится. На практике применим, если нужно вызвать функцию или метод объекта, которые что либо могут возвращать или выводить, но в выводе шаблона эти данные не нужны отображать.

Тег trans¶

Тег trans специфичен для Drupal 8. Этот тег позволяет переводить текст (используя токены) внутри тега используя функцию t() или TranslationManager::formatPlural(). если внутри тега использована конструкция <% plural. %> :

С фильтром t перевод той же самой строки выглядел бы так:

По умолчанию все токены передаются в t() или TranslationManager::formatPlural() с префиксом @ для экранирования. Для использования префикса % нужно модифицировать токен-переменную с помощью фильтра placeholder:

Для использования разных форм для множественного числа существительных используйте конструкцию <% plural. %> внутри тега trans:

Для использования перевода для множественных чисел существительных в административном интерфейсе сайта на странице /admin/config/regional/translate нужно указать переводы для единственного числа и для двух форм множественного:

В функции t() и методе TranslationManager::formatPlural() имеется параметр $options, с помощью которого передается дополнительный контекст или язык для перевода (подробнее в документации t() ). Для использования этих опций в теге trans, используйте синтаксис with <. > в открывающемся теге trans:

Строку для перевода можно также задавать аргументом прямо в открывающемся теге trans:

Twig шаблонизатор русское руководство

Хотите быстро изучить JavaScript и jQuery?

Предлагаю использовать самый эффективный и современный метод обучения - видеокурс .

За счет получения информации сразу по двум каналам (зрение и слух) эффективность обучения значительно превосходит обучение по книгам. А домашние задания и онлайн-тесты позволят вам постоянно думать на изучаемом языке и сразу проверять свои знания!

Более 100 видеоуроков на одном DVD.

Видеокурс "HTML с нуля"

Если вы давно хотите как следует изучить HTML, то у меня для Вас есть отличная новость!

Вы можете совершенно бесплатно получить полноценный курс по HTML из моего платного сборника. 33 видеоурока от Евгения Попова!

Видеокурс "CSS с нуля"

Если вы уже изучили HTML и хотите двигаться дальше, то следующим шагом будет изучение технологии CSS.

Так же, как и в случае с HTML, вы можете совершенно бесплатно получить полноценный курс по СSS из моего платного сборника. Вас ждет 45 подробных видеоуроков от Евгения Попова!

Видеокурс "Домен и хостинг"

Если вы хотите разобраться с понятиями домена и хостинга, научиться создавать базы данных, закачивать файлы сайта на сервер по FTP, создавать поддомены, настраивать почтовые ящики для своего сайта и следить за его посещаемостью, то этот курс создан специально для вас!

Получать новые уроки на E-mail:

Шаблонизатор Twig

Шаблонизатор Twig

При разработке веб-приложений и проектировании структуры будущего скрипта очень хорошей практикой является отделение логики от его дизайна. Таким образом, отображением данных занимается шаблон, а получением или формированием данных, соответственно, логическая часть. При этом удобно править каждую часть в отдельности, и код скрипта становится более удобочитаемым и понятным.

Однако если для отображения данных используются шаблоны, то возникает вопрос, как подгружать нужные шаблоны и как передавать данные в шаблон. Для этих целей применяются шаблонизаторы, которые можно как написать самостоятельно, так и воспользоваться уже готовым решением.

В данном цикле Премиум уроков мы с Вами будем изучать один из наиболее удобных шаблонизаторов – шаблонизатор Twig.

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

Русское руководство по шаблонизатору Twig. Научись сортировать элементы с помощью шаблонизатора Twig.

Все уроки курса:

Количество уроков: 6

Продолжительность курса: 04:44:38

Автор: Виктор Гавриленко

Меня зовут Виктор Гавриленко. Еще учась в институте, начал увлекаться компьютерными технологиями и программированием, на протяжении многих лет усиленно занимаюсь разработкой интернет сайтов и веб-программированием.

Описание курса: В данном цикле Премиум уроков мы с Вами будем изучать один из наиболее удобных шаблонизаторов – шаблонизатор Twig. Изучив курс по шаблонизатору Twig, Вы научитесь использовать шаблонизатор Twig, для создания шаблонов Вашего сайта, а так же узнаете, как манипулировать данными и формировать логические условия в шаблонах.

Категории премиум

Все права защищены © 2015
ИП Рог Виктор Михайлович
ОГРН: 313774621200541
Служба поддержки