Шаблоны в Symfony

Шаблоны в Symfony создаются с помощью Twig — гибкого, быстрого и безопасного шаблонизатора

    Создание и использование шаблонов

    Шаблоны в Symfony создаются с помощью Twig — гибкого, быстрого и безопасного шаблонизатора.

    #Установка Twig composer require symfony/twig-bundle
    Язык шаблонов Twig

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


    Синтаксис Twig основан на этих трех конструкциях:
    {{ ... }}, используется для отображения содержимого переменной или результата вычисления
    {% ... %}, используется для выполнения некоторой логики, например условного оператора или цикла
    {# ... #}, используется для добавления комментариев в шаблон (в отличие от HTML-комментариев, эти комментарии не отображаются на странице).

    {{ page_title }}

    {% if user.isLoggedIn %} {# ... #}

    фильтры изменяют содержимое перед отображением, как, например, фильтр upper для преобразования содержимого в верхний регистр.

    {{ title|upper }}

    В Twig есть:
    Теги
    Фильтры
    Функции


    Twig Extensions Defined by Symfony

    В Twig есть несколько параметров конфигурации, которые позволяют задать такие параметры, как формат отображения чисел и дат, кэширование шаблонов и т. д
    https://symfony.com/doc/current/reference/configuration/twig.html

    Создание шаблонов

    Сначала нужно создать новый файл в каталоге templates/ для хранения содержимого шаблона
    Например файл templates/user/notifications.html.twig
    Затем необходимо создать контроллер, который отображает этот шаблон и передает ему необходимые переменные в созданный шаблон

    // src/Controller/UserController.php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class UserController extends AbstractController { // ... public function notifications(): Response { // get the user information and notifications somehow $userFirstName = '...'; $userNotifications = ['...', '...']; // the template path is the relative file path from `templates/` return $this->render('user/notifications.html.twig', [ // this array defines the variables passed to the template, // where the key is the variable name and the value is the variable value // (Twig recommends using snake_case variable names: 'foo_bar' instead of 'fooBar') 'user_first_name' => $userFirstName, 'notifications' => $userNotifications, ]); } }

    Источник: https://symfony.com/doc/current/templates.html


    Именование шаблонов

    Используйте змеиный регистр для имен файлов и каталогов (например, blog_posts.html.twig, admin/default_theme/blog/index.html.twig, и т. д.);


    Переменные шаблона

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

    {{ user.name }} added this comment on {{ comment.publishedAt|date }}

    При использовании нотации foo.bar Twig пытается получить значение переменной в следующем порядке:

    $foo['bar'] (массив и элемент);
    $foo->bar (объект и публичное свойство);
    $foo->bar() (объект и публичный метод);
    $foo->getBar() (объект и метод getter);
    $foo->isBar() (объект и метод isser);
    $foo->hasBar() (объект и метод hasser);
    Если ничего из вышеперечисленного не подходит, используйте null (или сгенерируйте исключение Twig\Error\RuntimeError при включенной опции strict_variables).
    

    Ссылки на страницы

    Вместо того чтобы прописывать URL-адреса ссылок вручную, используйте path()функцию для создания URL-адресов на основе конфигурации маршрутизации.
    Позже, если вы захотите изменить URL-адрес конкретной страницы, вам нужно будет лишь изменить конфигурацию маршрутизации: шаблоны автоматически сгенерируют новый URL-адрес.
    Подробнее здесь: https://symfony.com/doc/current/templates.html#linking-to-pages

    {{ post.title }}
    Ссылки на CSS, JavaScript и изображения

    Если шаблону нужна ссылка на статический ресурс (например, изображение), Symfony предоставляет функцию asset() Twig, которая помогает сгенерировать такой URL. Сначала установите пакет asset:

    composer require symfony/asset

    asset() добавляет хэш версии к URL-адресам ресурсов для очистки кэша. Это работает как через AssetMapper, так и через компонент Asset

    {# the image lives at "public/images/logo.png" #} Symfony! {# the CSS file lives at "public/css/blog.css" #} {# the JS file lives at "public/bundles/acme/js/loader.js" #}
    Сборка, управление версиями и более продвинутая обработка CSS, JavaScript и изображений

    О том, как создавать и управлять версиями ресурсов JavaScript и CSS современным способом, читайте в статье о Symfony AssetMapper.
    https://symfony.com/doc/current/frontend.html


    Глобальная переменная приложения


    Источники
    Последнее изменение: 29.04.2026 23:19


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ