Exemple #1
0
 /**
  * [createUrl description]
  * @param  [type] $params [description]
  * @return [type]         [description]
  */
 public function createUrl($params)
 {
     $defaultLang = Lang::getDefaultLang();
     if (isset($params[1]) && isset($params[1]['lang_id'])) {
         // Если указан идентификатор языка, то делаем попытку найти язык в БД, иначе работаем с языком по умолчанию.
         $lang = Lang::findOne(['url' => $params[1]['lang_id']]);
         if ($lang === null) {
             $lang = $defaultLang;
         }
         unset($params[1]['lang_id']);
     } else {
         // Если не указан параметр языка, то работаем с текущим языком.
         $lang = Lang::getCurrent();
     }
     // Получаем сформированный URL(без префикса идентификатора языка).
     $url = parent::createUrl($params);
     if ($lang->url == $defaultLang->url) {
         return $url;
     }
     // Добавляем к URL префикс - буквенный идентификатор языка.
     if ($url == '/') {
         return '/' . $lang->url;
     } else {
         return '/' . $lang->url . $url;
     }
 }
Exemple #2
0
 /**
  * [getLangUrl description]
  * @return [type] [description]
  */
 public function getLangUrl()
 {
     if ($this->_lang_url === null) {
         $defaultLang = Lang::getDefaultLang();
         $this->_lang_url = $this->getUrl();
         $url_list = explode('/', $this->_lang_url);
         $lang_url = isset($url_list[1]) ? $url_list[1] : null;
         Lang::setCurrent($lang_url);
         if ($lang_url !== null && $lang_url === Lang::getCurrent()->url && strpos($this->_lang_url, Lang::getCurrent()->url) === 1) {
             $this->_lang_url = substr($this->_lang_url, strlen(Lang::getCurrent()->url) + 1);
         }
         // Если язык в адресе соотвествует дефолтному то редиректим на урл без языка.
         if ($defaultLang->url == $lang_url) {
             if ($this->_lang_url) {
                 $url = $this->_lang_url;
             } else {
                 $url = '/';
             }
             return Yii::$app->getResponse()->redirect($url, 301);
         }
     }
     return $this->_lang_url;
 }
Exemple #3
0
 public function createUrl($params)
 {
     if (is_array($params) && array_key_exists('lang_id', $params)) {
         //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 = parent::createUrl($params);
     $baseUrl = $this->showScriptName || !$this->enablePrettyUrl ? $this->getScriptUrl() : $this->getBaseUrl();
     if ($url !== '/') {
         if ($baseUrl === '') {
             return '/' . $lang->url . $url;
         } else {
             return str_replace($baseUrl, "{$baseUrl}/{$lang->url}", $url);
         }
     } else {
         return '/' . $lang->url;
     }
 }