LangUrlManager.php 1.28 KB
<?php

namespace common\components;

use yii\web\UrlManager;
use common\models\Language;

class LangUrlManager extends UrlManager
{
    public function createUrl ($params)
    {
        if (isset ($params['language_id']))
        {
            //Если указан идентификатор языка, то делаем попытку найти язык в БД,
            //иначе работаем с языком по умолчанию 
            if (($lang_code = Language::findOne($params['language_id'])) === null)
            {
                $lang_code = Language::getDefaultLang();
            }
            
            unset ($params['language_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);
    }
}