Yii language urlManager in url

I am trying to add a language to the url with the following syntax: http://www.example.com/en/site/page/view/about

That I still work with short URLs such as: http://www.example.com/en/site/contact but not as long as in my first example

Here is what I still have:

/config/main.php

'urlManager'=>array( 'class'=>'application.components.MyCUrlManager', 'urlFormat'=>'path', 'showScriptName'=>false, 'rules'=>array( '<language:\w+>/<controller:\w+>/<id:\d+>'=>'<controller>/view', '<language:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', '<language:\w+>/<controller:\w+>/<action:\w+>'=>'<controller>/<action>', ), ), 

 <?php // components/MyCUrlManager.php class MyCUrlManager extends CUrlManager { public function createUrl($route,$params=array(),$ampersand='&') { if(isset($_POST['_lang'])) { Yii::app()->setLanguage($_POST['_lang']); $route['language']=Yii::app()->language; } elseif (!isset($route['language'])) { $route['language']=Yii::app()->language; } else { Yii::app()->setLanguage($route['language']); } return parent::createUrl($route, $params, $ampersand); } } ?> 

 class LangBox extends CWidget { public function run() { $currentLang = Yii::app()->language; require_once 'Zend/Locale.php'; $locale = new Zend_Locale(); //$siteLanguages = $this->getLang(); $siteLanguages = array('en','de','tr'); foreach($siteLanguages as $value){ $list[$value] = $locale->getTranslation($value, 'Language', $value); } asort($list); $this->render('langBox', array('currentLang' => $currentLang, 'list'=>$list)); } } 
+4
source share
1 answer

I had the same problem, and the following rules work for me also with submodules and any number of parameters:

  '<lang:[az]{2}>/<_m>/<_c>' => '<_m>/<_c>', '<lang:[az]{2}>/<_m>/<_c>/<_a>*' => '<_m>/<_c>/<_a>', '<lang:[az]{2}>/<_m>/<_a>' => '<_m>/<_a>', '<lang:[az]{2}>/<_c>' => '<_c>', '<lang:[az]{2}>/<_c>/<_a>' => '<_c>/<_a>', 

_m is the special value for the module, _c for the controller, and _a for actions.

+5
source

Source: https://habr.com/ru/post/1305959/


All Articles