Перейти к основному содержимому

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

MMO-DEV WEB использует Twig 3.x - современный, быстрый и безопасный шаблонизатор для PHP, разработанный командой Symfony.

Преимущества Twig​

  • Безопасность - автоматическое экранирование вывода (autoescape), защита от XSS-атак
  • Производительность - шаблоны компилируются в оптимизированный PHP-код и кэшируются
  • Наследование шаблонов - мощная система extends / block для переиспользования макетов
  • Чистый синтаксис - лаконичный и читаемый код шаблонов
  • Расширяемость - поддержка пользовательских фильтров, функций и тегов

Пространства имён​

В MMO-DEV WEB шаблоны организованы по пространствам имён, каждое из которых указывает на свою директорию:

ПространствоДиректорияОписание
@sitetemplates/site/Шаблоны основного сайта
@admintemplates/admin/Шаблоны панели администрирования
@cabinettemplates/cabinet/Шаблоны личного кабинета
@commontemplates/common/Общие шаблоны (email, компоненты)

Использование​

Подключение шаблонов
{# Подключение шаблона из конкретного пространства имён #}
{% include '@common/components/pagination.html.twig' %}

{# Наследование от базового макета сайта #}
{% extends '@site/layout.html.twig' %}

{# Подключение шаблона кабинета #}
{% include '@cabinet/partials/sidebar.html.twig' %}

Структура директорий​

Структура templates/

Функция asset()​

Для подключения статических ресурсов (CSS, JS, изображения) используется функция asset() с автоматическим cache busting:

asset()
{# CSS #}
<link rel="stylesheet" href="{{ asset('css/style.css') }}">
{# Результат: /css/style.css?v=1a2b3c4d #}

{# JavaScript #}
<script src="{{ asset('js/app.js') }}"></script>

{# Изображения #}
<img src="{{ asset('images/logo.png') }}" alt="Logo">

Параметр версии (?v=...) добавляется автоматически на основе хеша файла, что гарантирует обновление кэша браузера при изменении файла.

Расширение файлов​

Шаблоны используют расширение .html.twig (двойное расширение):

  • Первая часть (.html) указывает формат вывода
  • Вторая часть (.twig) указывает шаблонизатор

Официальная документация​

Полная документация Twig доступна на официальном сайте: twig.symfony.com