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

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

Сообщество Symfony гордится созданием и поддержанием высококачественных пакетов (см. KnpBundles.com) для большого количества различных функций. Как только вы используете сторонний пакет, вам скорее всего понадобится переопределить и настроить один или несколько его шаблонов.

Представьте, что вы установили воображаемый открытый источник информации AcmeBlogBundle в вашем проекте. И в то время, как вы всем очень довольны, вы всё равно хотите переопределить шаблон для страницы списка блога. Внутри пакета, шаблон, который вы хотите переопределить, находится в Resources/views/Blog/index.html.twig.

Чтобы переопределить шаблон пакета, просто скопируйте шаблон index.html.twig из пакета в app/Resources/AcmeBlogBundle/views/Blog/index.html.twig (каталог app/Resources/AcmeBlogBundle не будет существовать, так что вам понадобится создать его). Теперь вы свободно можете настраивать шаблон.

Caution

Если вы добавите шаблон в новую локацию, возможно вам понадобится очистить ваш кеш (php bin/console cache:clear), даже если вы в режиме отладки.

Эта же логика применима к любому шаблону, живущему в пакете: просто следуйте соглашению: app/Resources/{BUNDLE_NAME}/views/{PATH/TO/TEMPLATE.html.twig}.

Note

Вы также можете переопределять шаблоны из пакета, используя наследование пакетов. Чтобы узнать больше, см. How to Use Bundle Inheritance to Override Parts of a Bundle.

Переопределение базовых шаблонов

Так как фреймворк Symfony сам по себе тоже всего лишь пакет, базовые шаблоны могут быть переопределены таким же образом. Например, базовый TwigBundle содержит несколько разных шаблонов "исключения" и "ошибки", которые могут быть переопределены путём копирования каждого из каталога Resources/views/Exception пакета TwigBundle, в каталог app/Resources/TwigBundle/views/Exception.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.