0

我正在学习 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))',
...
4

1 回答 1

0

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

如果要在CGridView列中创建 URL,则需要用 . 将表达式括起来'。您也不需要调用createUrl(),因为CHtml::link将接受带有参数的路由。

'value'=>'CHtml::link($data->username,array("admin/useredit","id"=>$data->id))'
于 2013-07-16T06:51:24.550 回答