В Symfony оптимально хранить данные, которые необходимо выводить на всех страницах приложения, в шаблоне основного макета (base layout template).
Шаблон основного макета является общим для всех страниц приложения и определяет общую структуру и внешний вид страниц. В нем обычно содержатся элементы, которые должны быть присутствовать на всех страницах, такие как заголовок, навигационное меню, подвал и т. д.
Для хранения данных, которые будут выводиться на всех страницах, вы можете использовать блоки (blocks) в шаблоне основного макета. Блоки это разделы кода, которые можно переопределить в дочерних шаблонах (views) для вставки специфического контента. В Symfony блоки могут быть объявлены с помощью функции block
или endblock
в шаблоне основного макета.
Например, если вы хотите добавить некий текст на всех страницах, вы можете создать блок в основном макете следующим образом:
{# app/Resources/views/base.html.twig #} <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{% block title %}My App{% endblock %}</title> </head> <body> <nav> <ul> <li><a href="/">Home</a></li> <li><a href="/about">About</a></li> </ul> </nav> <div class="content"> {% block content %}{% endblock %} </div> <footer> <p>© 2022 My App</p> </footer> </body> </html>
Затем в дочерних шаблонах можно переопределить этот блок и добавить необходимый контент:
{# app/Resources/views/home.html.twig #} {% extends 'base.html.twig' %} {% block title %}Home - My App{% endblock %} {% block content %} <h1>Welcome to My App!</h1> <p>This is the home page content.</p> {% endblock %}
Теперь при открытии страницы /
будет отображаться текст "Welcome to My App!" и "This is the home page content.", а в подвале будет указан год "2022" и название приложения "My App".
Таким образом, использование блоков в шаблоне основного макета позволяет удобно и эффективно хранить и выводить данные на всех страницах приложения в Symfony.