Як впорядкувати ваші шаблони Twig, використовуючи наслідування

Дата оновлення перекладу 2023-06-22

Як впорядкувати ваші шаблони Twig, використовуючи наслідування

Одним із розповсюджених способів використовувати наслідування є трирівневий підхід. Цей метод ідеально працює з трьома різними видами шаблонів, які щойно що описувалися:

  • Створіть файл app/Resources/views/base.html.twig, який містить головний макет для вашого додатка (як у попередньому прикладі). Внутрішньо, цей шаблон називається base.html.twig;
  • Створіть шаблон для кожного "розділу" вашого сайту. Наприклад, функціональність блогу матиме шаблон під назвою blog/layout.html.twig, який містить тільки елементи, що належать до блогу;

    1
    2
    3
    4
    5
    6
    7
    8
    {# app/Resources/views/blog/layout.html.twig #}
    {% extends 'base.html.twig' %}
    
    {% block body %}
        <h1>Blog Application</h1>
    
        {% block content %}{% endblock %}
    {% endblock %}
  • Створіть індивідуальні шаблони для кожної сторінки і зробіть так, щоб кожен розширював відповідну частину шаблону. Наприклад, головна сторінка "index" буде називатися якось на кшталт blog/index.html.twig і перераховувати актуальні записи блогу.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    {# app/Resources/views/blog/index.html.twig #}
    {% extends 'blog/layout.html.twig' %}
    
    {% block content %}
        {% for entry in blog_entries %}
            <h2>{{ entry.title }}</h2>
            <p>{{ entry.body }}</p>
        {% endfor %}
    {% endblock %}

Зауважте, що цей шаблон розширює розділ шаблону (blog/layout.html.twig), який, своєю чергою, розширює базовий макет додатка (base.html.twig). Це поширена модель трирівневого наслідування.

Під час побудови вашого додатка, ви можете вирішити слідувати цьому методу, або просто робити так, щоб шаблон кожної сторінки розширював базовий щаблон додатка безпосередньо (наприклад, {% extends 'base.html.twig' %}). Модель трьох шаблонів - це найкраща практика, що використовується пакетами-постачальниками, щоб базовий шаблон пакета можна було легко перевизначити для правильного розширення базового макета вашого додатка.