2016-02-22 4 views
1

Я использую LiipThemeBundle, который поддерживает различные темы на веб-сайте, в зависимости от параметра (liip_theme.active_theme):Как изменить параметр Symfony

liip_theme: 
    themes: ['standardTheme', 'blackTheme'] 
    active_theme: 'standardTheme' 

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

Так что изменение значения yml значением из базы данных не будет работать в среде prod (поскольку оно берет его из кеша). Это похоже на лучшее решение, если я могу найти способ «вставить» его в кеш.

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

Как изменить параметр или не разрешить его кэширование?

+0

Следует понимать, что вы не пытаетесь фактически изменить кешированный параметр, а скорее определение кэшированного сервиса. Копайте в код или сканируйте сгенерированный кеш, чтобы понять, что я имею в виду. Если вы не вникнете в LiipThemeBundle и не измените код, чтобы эффективно разрешить настройку темы на основе запроса (что, вероятно, замедлит работу), я действительно не вижу другого подхода, кроме восстановления кэша. – Cerad

+0

Да, этот параметр вводится в несколько сервисов пакета liip в своих конструкторах. Проблема с удалением кеша заключается в том, что кажется, что я пытаюсь убить москитов пушками. В этом случае следует ли использовать компонент Yaml для изменения параметра и восстановления кэша? Это жизнеспособный подход? –

+0

Да. Это единственный практический подход, который я вижу. Я не согласен с твоим пушечным заявлением. Кэширование - это просто подход, который Symfony использует, чтобы быть достаточно эффективным. У вас есть возможность реализовать собственное программное обеспечение, основанное на запросах. Возможно, даже некоторые из них уже есть. – Cerad

ответ

-1

Ну, вы должны попробовать:

liip_theme: темы : [ 'standardTheme', 'blackTheme'] active_theme: "% liip_theme%"

в% liip_theme% определяется в параметрах раздела конфигурации .ml

Смежные вопросы