/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
backend/widgets/LangWidget.php
74 строки
2 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace backend\widgets; use common\assets\FlagAsset; use common\components\LanguageSelector; use common\helpers\ArrayHelper; use common\kdf\KLanguage; use common\widgets\BasePanelWidget; use Yii; use yii\helpers\Url; /** * Виджет - переключение языков * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2021 */ class LangWidget extends BasePanelWidget { /** * Использовать пользовательскую сортировку, активного языка ? * * @var bool */ public $usort = true; /** * @inheritdoc */ public $viewName = 'lang'; /** * @inheritdoc */ public function doRun() { $language = Yii::$app->language; /** @var LanguageSelector $languageSelector */ $languageSelector = Yii::$app->get('languageSelector'); $lang_list = $languageSelector->supportedLanguages; if ($this->usort) { usort($lang_list, function ($lang) use ($language) { return $lang == $language ? 1 : -1; }); } $list = KLanguage::find() ->where([ 'code' => $lang_list ]) ->indexBy('id') ->all(); $result = []; foreach ($lang_list as $lang_id => $lang) { $url = Url::to(['language/switch', 'language' => $lang]); $result[$lang_id] = [ 'active' => $lang == $language, 'lang' => ArrayHelper::getValue($list, $lang_id), 'url' => $url ]; } FlagAsset::register(Yii::$app->view); return [ 'lang_list' => $result ]; } }