我正在使用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
错误结束。
如何在网址中构建没有参数名称的链接?
其他信息 - 我在 /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>',
),
),
...
),
);
答案 0 :(得分:0)
$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))',
)
),
),
),
));
在/protected/config/main.php
中 'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName' => false,
'rules'=>array(
'<controller:\w+>/<myId:\d+>'=>'<controller>/view',
),
),
将操作视图更改为
public function actionView($myId){
$model= User::model()->findByPk($myId);
$this->render('view' , array('model' => $model));
}
答案 1 :(得分:0)
当您有/index.php/bar/myid/123
作为网址时,actionView
的{{1}}必须以BarController
(不是myid
)作为参数。可能你有id
因此导致问题。所以你需要像这样的actionView:
actionView($id)