Переопределить способ, которым Твиг находит взгляды?

Я новичок в Symfony, и до сих пор я просто в восторге!

Прямо сейчас я играю с разными личными хобби-проектами, и я наткнулся на то, что, кажется, не в состоянии обернуться.


Я сейчас использую Symfony 3.3.6. Я пытаюсь добавить theme функциональность для моего проекта. Прямо сейчас у меня есть мои Связки, у которых есть их собственные представления, которые я могу переписать внутри app/Resources/views/, Итак, прямо из коробки Symfony поддерживает базовый вид с возможностью перезаписи.

То, что я хотел бы достичь, это еще один уровень отступления.

Я хотел бы, чтобы ветка ПЕРВЫЙ заглянула в папку с темой, где [THEME] был бы конфиг.

1) Найдите файл в / app / theme / [THEME] / resources / view
2) Найдите файл в / app / theme / [THEME] / resources / [BUNDLE] / view


Я также хотел бы, чтобы это происходило внутри пакета, например, ThemeBundle.

По сути, я хотел бы иметь комплект, который бы использовал логику для Твиг о том, как найти взгляды. Очень важно, чтобы весь код прямо сейчас работал. Поэтому я не хочу добавлять переменную пути или что-то подобное, но Я на самом деле хотел бы изменить поведение TwigBundle из моего собственного Bundle!

Это возможно?

3

Решение

Twig имеет встроенную функцию для достижения того, что вы хотите называть Пространства имен.

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

Настройте пути в вашем app/config/config.yml как это:

twig:
# ...
paths:
'%kernel.project_dir%/vendor/acme/themes/theme1': theme
'%kernel.project_dir%/vendor/acme/themes/theme2': theme
'%kernel.project_dir%/vendor/acme/themes/common': theme

Затем используйте пространство имен в вашем шаблоне так:

{{ include('@theme/header.twig') }}

Смотрите главу документации Несколько путей в пространстве имен.

Чтобы динамически добавлять больше путей, живущих в каталогах комплекта, вы можете использовать проход компилятора внутри соответствующего комплекта, чтобы добавить их.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector