Я использую LiipThemeBundle, который поддерживает различные темы на веб-сайте, в зависимости от параметра (liip_theme.active_theme):Как изменить параметр Symfony
liip_theme:
themes: ['standardTheme', 'blackTheme']
active_theme: 'standardTheme'
Я хотел изменить активную тему из формы или возьмите его из базы данных, чтобы динамическая тема менялась. Проблема в том, что параметр кэшируется, и вы не можете изменять значения параметров, не удаляя кеш. Я также считаю, что удаление всего кеша только для параметра не является хорошей идеей.
Так что изменение значения yml значением из базы данных не будет работать в среде prod (поскольку оно берет его из кеша). Это похоже на лучшее решение, если я могу найти способ «вставить» его в кеш.
Передача компилятора также не является хорошей идеей, поскольку параметр иногда изменяется, только когда администратор веб-сайта решает изменить его.
Как изменить параметр или не разрешить его кэширование?
Следует понимать, что вы не пытаетесь фактически изменить кешированный параметр, а скорее определение кэшированного сервиса. Копайте в код или сканируйте сгенерированный кеш, чтобы понять, что я имею в виду. Если вы не вникнете в LiipThemeBundle и не измените код, чтобы эффективно разрешить настройку темы на основе запроса (что, вероятно, замедлит работу), я действительно не вижу другого подхода, кроме восстановления кэша. – Cerad
Да, этот параметр вводится в несколько сервисов пакета liip в своих конструкторах. Проблема с удалением кеша заключается в том, что кажется, что я пытаюсь убить москитов пушками. В этом случае следует ли использовать компонент Yaml для изменения параметра и восстановления кэша? Это жизнеспособный подход? –
Да. Это единственный практический подход, который я вижу. Я не согласен с твоим пушечным заявлением. Кэширование - это просто подход, который Symfony использует, чтобы быть достаточно эффективным. У вас есть возможность реализовать собственное программное обеспечение, основанное на запросах. Возможно, даже некоторые из них уже есть. – Cerad