/**
  * Resolve
  * Resolves the current request into a route and the associated parameters.
  * Sets default application language
  * @return array the first element is the route, and the second is the associated parameters.
  * @throws \yii\web\NotFoundHttpException if the request cannot be resolved.
  */
 public function resolve()
 {
     $resolve = parent::resolve();
     $languages = Language::getDb()->cache(function ($db) {
         return Language::find()->where(['is_active' => true])->asArray()->all();
     });
     Yii::$app->params['languages'] = ArrayHelper::map($languages, 'code', 'code');
     Yii::$app->language = $this->getCurrentLang();
     return $resolve;
 }
Esempio n. 2
0
 /**
  * Render block content
  * @return string
  */
 public function run()
 {
     $languages = Language::getDb()->cache(function ($db) {
         $query = Language::find();
         if (!$this->showDisabled) {
             $query->where(['is_active' => true]);
         }
         return $query->asArray()->all();
     });
     $list = [];
     foreach ($languages as $lang) {
         if ($lang['code'] == Yii::$app->language) {
             $current = $lang;
         } else {
             $list[] = ['code' => $lang['code'], 'name' => $lang['name'], 'flag' => $lang['flag'], 'url' => Url::toRoute(['/multilang/change/set', 'lang' => $lang['code']])];
         }
     }
     return $this->render($this->layout, ['languages' => $list, 'current' => $current]);
 }