yii CBidetonColumn在gride视图中给出了错误

时间:2015-08-15 08:48:01

标签: php gridview yii controller cbuttoncolumn

我有一个带有CGrideView的管理页面,但是当我想更改我的按钮列以添加一些其他按钮时会出现此错误:CButtonColumn及其行为没有名为“getId”的方法或闭包。

管理员行动:

    public function actionAdmin()
    {
        $model=new Block('search');
        $model->unsetAttributes();  // clear any default values
        if (isset($_GET['Block'])) {
            $model->attributes=$_GET['Block'];
        }

        $this->render('admin',array(
            'model'=>$model,
        ));
    }

管理员视图:

 $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'block-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'name',
        'content',
        'type',
        'enable',
        array(
            'class'=>'CButtonColumn',
            'template' => '{view}{update}',
            'buttons' => array(
                'update' => array(
                    'url' => 'Yii::app()->controller->createUrl("update", array("name"=>$data->name))'
                ),
                'view' => array(
                    'url'=>'CController::createUrl("view", array("name"=>$data->name))'
                ),
            ),
        ),
)));

2 个答案:

答案 0 :(得分:1)

解决了!原因在于:

        'view'=>array(
         'url'=>'CController::createUrl("view",array("name"=>$data->name))'
        ),

它应该是:

                'view'=>array(
                'url'=>'Yii::app()->controller->createUrl("view", array("name"=>$data->name))'
            ),

为什么? 因为(): 因为Yii :: app() - >控制器它是当前应用程序的实例控制器。控制器具有私有$ _id属性。 CController :: createUrl它只是静态方法。在方法createUrl()中调用方法$ this-> getId(),但是当你调用静态方法实例时没有创建 - @ DanilaGanchar。

所以在CController :: createUrl中它无法找到控制器的id,并且我应该给它参数像这样CController :: createUrl(“/ page / view”,array(“name”=> $ data-> name))我现在尝试并且工作

答案 1 :(得分:0)

template中元素的顺序必须等于buttons中元素的顺序。您{view}{update}template,但您先定义了update按钮!所以我认为将'template'=>'{view}{update}'更改为'template'=>'{update}{view}'可能会解决您的问题。