Yii - 将模型ID传递到CButtonColumn图像的视图中

时间:2015-08-07 21:57:55

标签: php yii

好吧,对Yii还是新手我试图在CGridView的列中创建一个按钮。单击此按钮将使用户进入“view.php”页面,并通过传入其ID来显示他们点击的节点的信息。

我很沮丧,我无法弄清楚如何简单地添加指向我的用户的图像的链接。以下是我过去几天一直在处理的代码片段。

的index.php

<?php echo CHtml::beginForm(); ?>
<?php
$pageSize = Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']);
$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'nodes-grid',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'columns' => array(
        array(
            'class' => 'CButtonColumn',
            'template' => '{restart}',
            'buttons' => array
            (
                'restart' => array
                (
                    'label'=>'Restart this node',
                    'imageUrl'=>Yii::app()->baseUrl.'/images/refresh.png',
                    'options'=>array('id'=>'NB_bounce_Button'),
                    'url'=>array('view', 'id'=>$model->id),
                )
            ),
        ),
        /* 'id', */
        'name',
        'url',
        'description',
        'node_type',
        'last_bounced',
        //..

NodeBouncerController.php(查看操作)

/**
 * Displays a particular model.
 * @param integer $id the ID of the model to be displayed
 */
public function actionView($id) {
    $this->render('view', array(
        'model' => $this->loadModel($id),
    ));
}

Current view of Node Bouncer page

按钮位于左侧。 (刷新绿色箭头)

我做错了什么?更具体地说,我是否错误地使用了CButtonColumn的按钮?如果是这样,我该如何解决这个问题?

我的公司使用:Yii v1.1.8.r3324

<小时/> 编辑:[8/10/15]

似乎我可能过度复杂了。我需要的是简单地创建一个图像链接,当单击该图像链接到所单击的特定节点的视图时。好吧,Gii自动生成我需要的特定视图和与之关联的代码(如上所示)。

我的解决方法是废除我过于复杂的混乱并保持简单。使用已经为“视图”提供的模板,并根据我的需要进行更改。

像这样:

/* 'id', */
        array(
          'class'=>'CButtonColumn',
          'template'=>'{view}',
          'buttons' => array
              (
                'view' => array
                    (
                        'label'=>'Restart this node',
                        'imageUrl'=>Yii::app()->baseUrl.'/images/refresh.png',
                        'options'=>array
                                    (
                                        'id'=>'NB_bounce_Button'
                                    )
                    )
              ),
        ),
        'name',
        'url',
        'description',
        'node_type',
        'last_bounced',
        //....

知道如何手动执行此操作会很高兴,但我现在需要一些简单的工作,稍后再进行工作。

1 个答案:

答案 0 :(得分:0)

我认为问题是按钮的URL。因为您未在网址中包含 controllerID 。你应该用这个:

'url' => 'Yii::app()->createUrl("nodeBouncer/view", "id"=>$model->id)';

要在yii中创建url,通常应该遵循以下模式: 的 contollerID / actionID