Пример #1
0
 public function createUrl($params)
 {
     if (isset($params['lang_id'])) {
         //Если указан идентификатор языка, то делаем попытку найти язык в БД,
         //иначе работаем с языком по умолчанию
         $lang = Lang::findOne($params['lang_id']);
         if ($lang === null) {
             $lang = Lang::getDefaultLang();
         }
         unset($params['lang_id']);
     } else {
         //Если не указан параметр языка, то работаем с текущим языком
         $lang = Lang::getCurrent();
     }
     //Получаем сформированный URL(без префикса идентификатора языка)
     $url = parent::createUrl($params);
     //Добавляем к URL префикс - буквенный идентификатор языка
     if ($url == '/') {
         return '/' . $lang->url;
     } else {
         if (YII_DEBUG && !empty(Yii::$app->params['mainPathCount'])) {
             $url_list = explode('/', $url);
             $mainPath = [];
             for ($i = 0; $i <= Yii::$app->params['mainPathCount']; $i++) {
                 $mainPath[] = array_shift($url_list);
             }
             $url_list = array_merge($mainPath, [$lang->url], $url_list);
             return join('/', $url_list);
         }
         return '/' . $lang->url . $url;
     }
 }
Пример #2
0
 public function createUrl($params)
 {
     if (isset($params['lang_id'])) {
         //Если указан идентификатор языка, то делаем попытку найти язык в БД,
         //иначе работаем с языком по умолчанию
         $lang = Lang::findOne($params['lang_id']);
         if ($lang === null) {
             $lang = Lang::getDefaultLang();
         }
         unset($params['lang_id']);
     } else {
         //Если не указан параметр языка, то работаем с текущим языком
         $lang = Lang::getCurrent();
     }
     //Получаем сформированный URL(без префикса идентификатора языка)
     $url = parent::createUrl($params);
     //Добавляем к URL префикс - буквенный идентификатор языка
     if ($url == '/') {
         return '/' . $lang->url;
     } else {
         return '/' . $lang->url . $url;
     }
 }
Пример #3
0
 /**
  * @inheritdoc
  */
 public function init()
 {
     $languages = Lang::find()->all();
     foreach ($languages as $language) {
         $this->languages[] = $language->getAttribute('url');
     }
     if ($this->enableLocaleUrls && $this->languages) {
         if (!$this->enablePrettyUrl) {
             throw new InvalidConfigException('Locale URL support requires enablePrettyUrl to be set to true.');
         }
     }
     $this->_defaultLanguage = Lang::getDefaultLang()->getAttribute('url');
     return parent::init();
 }