Я новичок в 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!
Это возможно?
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') }}
Смотрите главу документации Несколько путей в пространстве имен.
Чтобы динамически добавлять больше путей, живущих в каталогах комплекта, вы можете использовать проход компилятора внутри соответствующего комплекта, чтобы добавить их.
Других решений пока нет …