Intereting Posts
Функция Laravel принадлежит модели или контроллеру Как создать плагин cakephp 2 с помощью торта выпекать всю команду? Yii2 отключить Bootstrap Js, JQuery и CSS Алгоритм интеллектуальной разбивки на страницы Как я могу использовать хеширование MD5 для паролей в Laravel? laravel и multi-сеансы из одного браузера как узнать, какой конкретный процесс все еще работает в PHP Сеансы Codeigniter уничтожаются в IE 10 при смене страниц Использование HTML-очистителя на сайте с использованием только текстового ввода Как использовать подпапку в маршруте контроллера по умолчанию в CodeIgniter 3 jQuery DataTables Мастер / Подробности (дочерние строки) в виде частичного просмотра laravel Настройка сервера WAMP для отправки электронной почты Получать обновленное значение в MySQL вместо затронутых строк Настройка apache для обслуживания PHP при запросе файла MP3 Связывание блога WordPress с CodeIgniter View

Язык Yii urlManager в URL-адресе

Я пытаюсь добавить язык в url со следующим синтаксисом: http://www.example.com/ru/site/page/view/about

То, что я до сих пор работает с короткими URL-адресами, например: http://www.example.com/en/site/contact, но не с длинными один раз, как в моем первом примере

Вот что я имею до сих пор:

/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)); } } 

У меня была такая же проблема, и следующие правила работают для меня также с подмодулями и любым числом параметров:

  '<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 – специальное значение для модуля, _c для контроллера и _a для действия.