You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Created by Error202
|
|
|
|
* Date: 23.08.2018
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace frontend\config;
|
|
|
|
|
|
|
|
|
|
|
|
use core\helpers\LanguageHelper;
|
|
|
|
use yii\web\UrlManager;
|
|
|
|
use Yii;
|
|
|
|
|
|
|
|
class LanguageUrlManager extends UrlManager
|
|
|
|
{
|
|
|
|
public function init()
|
|
|
|
{
|
|
|
|
if (basename(Yii::$app->getBasePath()) !== 'frontend') {
|
|
|
|
return parent::init();
|
|
|
|
}
|
|
|
|
LanguageHelper::setLanguage(Yii::$app->request->getUrl());
|
|
|
|
$langPrefix = Yii::$app->language . '/';
|
|
|
|
$finalRules[$langPrefix] = '';
|
|
|
|
|
|
|
|
foreach ($this->rules as $rule => $path) {
|
|
|
|
if ( is_array($path) && isset($path['pattern']) && isset($path[0]) ) {
|
|
|
|
$finalRules[$langPrefix . ltrim($path['pattern'], '/')] = $path[0];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
$finalRules[$langPrefix . ltrim($rule, '/')] = $path;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$this->rules = array_merge_recursive($finalRules, $this->rules);
|
|
|
|
return parent::init();
|
|
|
|
}
|
|
|
|
|
|
|
|
public function createUrl( $params )
|
|
|
|
{
|
|
|
|
$url = parent::createUrl( $params );
|
|
|
|
return LanguageHelper::addLangToUrl($url, isset($params['language']) ? $params['language'] : null);
|
|
|
|
}
|
|
|
|
}
|