LangUrlManager.php
1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
namespace common\components;
use yii\web\UrlManager;
use common\models\Language;
class LangUrlManager extends UrlManager
{
    public function createUrl ($params)
    {
        if (isset ($params['lang_id']))
        {
            //Если указан идентификатор языка, то делаем попытку найти язык в БД,
            //иначе работаем с языком по умолчанию 
            if (($lang_code = Language::findOne($params['lang_id'])) === null)
            {
                $lang_code = Language::getDefaultLang();
            }
            
            unset ($params['lang_id']);
        } 
        else 
        {
            //Если не указан параметр языка, то работаем с текущим языком
            $lang_code = Language::getCurrent();
        }
        
        //Получаем сформированный URL(без префикса идентификатора языка)
        $url = parent::createUrl($params);
 
        // Добавляем к URL префикс - буквенный идентификатор языка 
        
        return $url == '/' ? '/'.$url : ($lang_code->is_default == 1 ?  $url : '/'.$lang_code->lang_code.$url);
    }
}