Задать вопрос
myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Где лучше считывать глобальные данные?

У меня есть настройки сайта (телефон, ссылки на соц сети, почта и так далее). Все данные размещены в базе данных и редактируются через админку. Они выводятся на все страницы сайта, аналогично как и меню. Где такие данные лучше всего получать? В файле layouts/main.php? Или это делается в другом месте? В какие переменные такие данные лучше всего помещать? Предполагаю сделать $params->phone....
  • Вопрос задан
  • 235 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 2
slo_nik
@slo_nik Куратор тега Yii
Доброй ночи.
Сделайте компонент Settigns(настройки) и получайте приблизительно так все данные, которые у Вас хранятся в базе
echo Yii::$app->settings->get('phone');
Вот статья, код написан для первой версии, но легко переписывается для второй версии yii.
Ответ написан
proudmore
@proudmore
Вы также можете отнаследовать класс yii/web/view, и переопределить в нем метод beforeRender. В этом методе вы сможете заполнить params, и эти параметры будут доступны в любом шаблоне как $this->params['key'].
Но чтобы это сработало, вам необходимо переопределить компонент View в конфиге приложения:
'components' => [
        'view' => [
            'class' => 'common\components\View'
        ],
....
]


В итоге класс получится примерно такой:
<?php

namespace common\components;

class View extends \yii\web\View
{
    public function beforeRender($viewFile, $params)
    {
        $this->params = Settings::GetAllSettings();
        return parent::beforeRender($viewFile, $params); // TODO: Change the autogenerated stub
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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