2013-07-16 73 views
0

我正在學習Yii並陷入了網址創建問題。我有一個組件urlManager如下:Yii框架:錯誤的創建網址

'urlManager'=>array(
         'urlFormat'=>'path', 
         'rules'=>array(
           '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
           '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
           '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
           'admin/useredit/<id:\d+>'=>'admin/useredit', 
         ), 
         'showScriptName'=>false, 
         'urlSuffix'=>'.html', 
       ), 

當我使用這個:

$this->createUrl('admin/useredit',array('id'=>'2')) 

它創建 'xxx.com/admin/useredit/.html2',但我希望「xxx.com/admin /useredit/2.html'

什麼可能是錯的?

編輯: 的問題是隻有在CGridView:

... 
'value' => 'CHtml::link("$data->username","'.$this->createUrl('admin/useredit',array('id'=>$data->id)).'".CHtml::encode($data->id))', 
... 

回答

0

您需要重新排序規則。將使用與您的路線相匹配的第一條規則。所以在你的情況下,這是<controller>/<action>。您應該將您的admin/useredit規則移至頂端。

如果要在CGridView列中創建URL,則需要用'圍繞表達式。您也不需要撥打createUrl(),因爲CHtml::link將接受帶參數的路線。

'value'=>'CHtml::link($data->username,array("admin/useredit","id"=>$data->id))' 
+0

這有效,但問題是與CGridView –

+0

查看更新的答案。 –