У меня была такая же проблема, и я использовал LiipThemeBundle для ее решения. мне потребовалось несколько минут для настройки:
- установите пакет с composer и активируйте его.
- config the bundle (app / config / config.yml)
liip_theme:
themes: ['theme1', 'theme2', 'theme3']
active_theme: 'theme1'
- скопировать три строки в app / config / routing.yml
liip_theme:
resource: "@LiipThemeBundle/Resources/config/routing.xml"
prefix: /theme
- переместить файлы из Resources \ views \ в Resources \ themes \ theme1 \
и готово !!
после этого, когда я отрисовываю шаблон в контроллере:
return $this->render('AcmeDemoBundle:Demo:index.html.twig');
он использует файл, расположенный в "Resources \ themes \ theme1 \ Demo \ index.html.twig". когда мне нужно переключиться на другую тему, в моем случае, потому что некоторые объекты моей модели имеют собственные темы, я могу сделать это с помощью одной строки кода:
$this->get('liip_theme.active_theme')->setName('theme2');
return $this->render('AcmeDemoBundle:Demo:index.html.twig');
и теперь использует файл, расположенный в "Resources \ themes \ theme2 \ Demo \ index.html.twig"
это просто !! (и чисто)