* @copyright (c), Thread */ class LangSwitch extends Widget { /** * @var string */ public $view = 'LangSwitch'; /** * @var string */ public $name = 'LangSwitch'; /** * @var string */ public $current = ''; /** * @var null */ protected $items = null; /** * */ public function init() { parent::init(); $langModel = Yii::$app->languages; $items = $langModel->getAll(); foreach ($items as $k => $item) { if ($item['deleted'] == ActiveRecord::STATUS_KEY_ON) { unset($items[$k]); } } $this->items = $items; $this->current = $langModel->getCurrent()['label']; } /** * @return string */ public function run() { $items = []; $request = Yii::$app->getRequest(); $baseUrl = $request->getBaseUrl(); $url = substr($request->getUrl(), strlen($baseUrl)); foreach ($this->items as $lang) { if (!$lang['by_default']) { $items[] = ['label' => $lang['label'], 'url' => $baseUrl . '/' . $lang['alias'] . $url]; } else { $items[] = ['label' => $lang['label'], 'url' => $baseUrl . $url]; } } return $this->render($this->view, [ 'models' => $items, 'current' => $this->current, ]); } }