@akula22

В каком месте мне прописать получение настроек из кэша?

Я сохраняю настройки сайта в админке в кэш
$cache->set('settings', $model->getAttributes());

Теперь я хочу на сайте выводить данные из настроек, например указать титл для страницы /site/default/index.

Вопрос: в каком месте мне прописать получение настроек из кэша
$settings = Yii::$app->cache->get('settings');

Чтоб например во вьюхе /site/default/index. получить их
$this->title = $settings['title'];
$this->registerMetaTag(['name' => 'keywords', 'content' => $settings['keywords']]);
$this->registerMetaTag(['name' => 'description', 'content' => $settings['description']]);


Я понимаю что я могу это сделать в контроллере /site/default
но я хочу это сделать один раз и глобально, например на странице контакты мне надо будет вывести телефоны из кэша, и я не хотел бы опять получать в контроллере контактов данные из кэша.
Дайте совет где это сделать один раз и глобально
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
В любом месте можно через Yii::$app->cache->get('settings');
Если нужны везде можно унаследовать все контролеры от одного, например MainController и в нем сделать:
public function beforeAction($event)
    {
        $data = Yii::$app->cache->get('settings');
        if ($data === false) {
            $data = $cache->set('settings', $model->getAttributes());
            Yii::$app->cache->set('settings', $data, 3600);
        }
// как вариант можно записывать в Yii::$app->params
//        Yii::$app->params = $data;

        return parent::beforeAction($event);
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы