Когда конкретно и в каком файле запускать сессию в yii?

122
13 октября 2019, 13:00

Настраиваю мультиязычность на Yii2 Basic. Хочу в сессии хранить язык интерфейса, выбранный пользователем. Нужно перед запуском всех контроллеров обновить язык интерейса в `config['language']` значением из сессии.

В каком файле / контроллере / месте приложения мне обратиться к сессии, вынуть значение и прописать его в конфиг так, чтобы все компоненты приложения, включая attributeLabels в моделях, при обращении к config читали уже обновленное значение языка?

UPDATE 1:

Появилась идея использовать голый PHP прямо в точке входа index.php и пошарить в сессии до запуска самого приложения (код ниже). Не знаю, насколько правильно так делать с архитектурной и проектной точки зрения. Всё ещё нужен совет!

<?php
require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
// Вот тут стучимся в сессию
$config = require __DIR__ . '/../config/web.php';
session_start();
$config['language'] = isset($_SESSION['language']) ? $_SESSION['language'] : 'ru-RU';
(new yii\web\Application($config))->run();
Answer 1

Надо создать компонент, который добавить в автозагрузку (чтобы он отрабатывал в момент инициализации приложения). В компоненте установить необходимую локализацию. Что-то типа такого:

public function init(){
    parent::init();
    $lang = Yii::$app->session->get('lang', 'en-EN');
    Yii::$app->language = $lang;
}

В конфиге в секцию bootstrap 'bootstrap' => ['log', 'ComponentName'],

READ ALSO
Не отправляет в БД через PHP

Не отправляет в БД через PHP

Вот такой код у меня есть: HTML

112
Скидка на второй и следующие продукты. Исключение продуктов на которые уже есть скидка

Скидка на второй и следующие продукты. Исключение продуктов на которые уже есть скидка

Есть такая проблемаМне нужен код , который будет давать скидку на второй и последующие продукты (у меня есть только на второй продукт, напишу...

123
В PHP перевести из числа в дату

В PHP перевести из числа в дату

При смывании форматирования с листа MS Excel даты превратились в числаПримеры:

125
PHP добавить в link rel=canonical текущий url

PHP добавить в link rel=canonical текущий url

Есть несколько десятков страниц, хтмл -код которых генерируется phpПри этом все url сайта статичные, динамически не генерируются

130