Yii框架:错误创建网址

时间:2013-07-16 06:39:21

标签: frameworks yii

我正在学习Yii并进入url创建问题。我有一个组件urlManager如下:

'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))',
...

1 个答案:

答案 0 :(得分:0)

您需要重新排序规则。将使用与您的路线匹配的第一条规则。所以在你的情况下,这是<controller>/<action>。您应该将admin/useredit规则移至顶部。

如果您想在CGridView列中创建网址,则需要使用'围绕您的表达。您也无需致电createUrl(),因为CHtml::link会接受带参数的路线。

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