【发布时间】:2015-09-05 22:56:06
【问题描述】:
我正在使用CGridView 来显示数据表:
/application/protected/views/foo/bar.php
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'my-grid',
'dataProvider' => $dataProvider,
'filter' => $model,
'columns' => array(
'myid',
...
array(
'class' => 'CButtonColumn',
),
),
));
这创建了一个表,每行包含三个链接:view、update 和 delete;例如(对于view):/index.php/foo/123,其中123 是元素的ID(或主键值)。
现在我想修改小部件调用,以获得不同的按钮链接,如/index.php/bar/123:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'my-grid',
'dataProvider' => $dataProvider,
'filter' => $model,
'columns' => array(
'myid',
...
array(
'class' => 'CButtonColumn',
'template' => '{view}{update}{delete}',
'buttons' => array(
'view' => array(
'url' => 'Yii::app()->createUrl("bar", array("myid" => $data->myid))',
)
),
),
),
));
我得到的(查看)链接如下所示:/index.php/bar/myid/123 -- 请求以 404 错误结束。
如何在 URL 中不带参数名称建立链接?
附加信息——我在/application/protected/config/main.php中的路由配置:
return array(
...
'components'=>array(
...
'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>',
),
),
...
),
);
【问题讨论】:
-
'url' => 'Yii::app()->createUrl("foo", array("id" => $data->myid))'生成/index.php/foo/id/123,而不是/index.php/foo/myid/123。您确定问题中的所有内容都正确吗? -
感谢您的提示。是的,我打错了。我现在纠正了这个问题。你有什么想法,如何解决这个问题?
标签: php url yii url-parameters yii-routing