4
我試圖將語言添加到URL具有以下語法: http://www.example.com/en/site/page/view/about在URL的Yii urlManager語言
我至今與短網址的工作原理是:一旦 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));
}
}
你期望'http://www.example.com/en/site/page/view/about'去哪兒?哪個控制器,動作等? – 2010-04-07 16:14:52
靜態頁面: 網站=控制器, 頁=靜態頁面, 視圖=目錄, 頁=約=> abaut.php, 非靜態頁面:, EN =語言, 分段2 =控制器, 段3 =行動, – RoboTamer 2010-04-08 19:11:06