This class extends Yii's UrlManager and adds features to detect the language from the URL or from browser settings transparently. It also can persist the language in the user session and optionally in a cookie. It also adds the language parameter to any created URL.
Inheritance: extends yii\web\UrlManager
コード例 #1
0
ファイル: UrlManager.php プロジェクト: tolik505/bl
 /** @inheritdoc */
 public function createUrl($params)
 {
     if (isset($params[$this->pageParam]) && in_array($params[$this->pageParam], [0, 1])) {
         unset($params[$this->pageParam]);
     }
     return parent::createUrl($params);
 }
コード例 #2
0
ファイル: UrlManager.php プロジェクト: nagser/base
 public function init()
 {
     /*
      * Чтобы избежать бесконечного редиректа смотрим, есть ли у сайта
      * язык, который установлен в куках пользователя
      * Есть такого языка нет, устанавливаем язык по умолчанию
      * */
     if (!ArrayHelper::getValue($this->languages, Yii::$app->session[$this->languageSessionKey])) {
         Yii::$app->session[$this->languageSessionKey] = Yii::$app->language;
     }
     parent::init();
 }
コード例 #3
0
 /**
  * @throws \yii\base\InvalidConfigException
  */
 public function init()
 {
     //        $languages=[];
     //        if(Yii::$app->params['settings']['languages']){
     //            foreach(Yii::$app->params['settings']['languages'] as $lang=>$name){
     //                $languages[]=$lang;
     //            }
     //        }
     //        $this->languages=$languages;
     if (!Yii::$app->user->isGuest) {
         $this->enableLanguageDetection = false;
         $this->enableLanguagePersistence = false;
     }
     parent::init();
 }
コード例 #4
0
 /**
  * @inheritdoc
  */
 public function init()
 {
     parent::init();
     self::checkDependency('codemix\\localeurls\\UrlManager', 'codemix/yii2-localeurls', "");
     if (empty($this->languages)) {
         if (empty($this->allowClass)) {
             throw new InvalidConfigException('Enter Class for load languages array for ex \\amass\\langprettyurl\\Component.');
         }
         /* @var Component $data */
         $data = Yii::createObject(['class' => $this->allowClass]);
         $this->languages = $data->languages;
     }
     if ($this->enableLocaleUrls && $this->languages) {
         if (!$this->enablePrettyUrl) {
             throw new InvalidConfigException('Locale URL support requires enablePrettyUrl to be set to true.');
         }
     }
     $this->_defaultLanguage = Yii::$app->language;
 }
コード例 #5
0
 public function init()
 {
     \Yii::$app->language = Language::getDefault();
     $this->languages = Language::enabled();
     parent::init();
 }
コード例 #6
0
ファイル: fluent.php プロジェクト: LosYear/yii2-fluent
<?php

return ['components' => ['user' => ['identityClass' => 'yii\\fluent\\models\\User', 'enableAutoLogin' => true, 'loginUrl' => ['fluent/user/login']], 'urlManager' => ['class' => \codemix\localeurls\UrlManager::className(), 'languages' => ['en', 'ru' => 'ru-RU'], 'enableLanguagePersistence' => false, 'rules' => [['class' => 'yii\\fluent\\components\\PagesRule']]], 'i18n' => ['translations' => ['fluent/*' => ['sourceLanguage' => 'en-US', 'basePath' => '@fluent/messages', 'class' => 'yii\\i18n\\PhpMessageSource', 'fileMap' => ['fluent/user' => 'user.php', 'fluent/models' => 'models.php']], 'interface' => ['sourceLanguage' => 'en-US', 'class' => \yii\fluent\components\DbMessageSource::className()]]], 'thumbnail' => ['class' => 'himiklab\\thumbnail\\EasyThumbnail', 'cacheAlias' => 'assets/thumbnails']], 'modules' => ['admin' => ['class' => 'yii\\fluent\\modules\\admin\\Module']]];