0

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))'
                ),
            ),
        ),
)));
4

2 に答える 2

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()->controller であるため、現在のアプリケーションのインスタンス Controller です。コントローラにはプロパティ private $_id があります。CController::createUrl 単なる静的メソッドです。メソッド createUrl() では、メソッド $this->getId() を呼び出しますが、静的メソッド インスタンスを呼び出すと、created-@DanilaGanchar は作成されません。

したがって、CController::createUrl ではコントローラーの ID を見つけることができず、使用するには、この CController::createUrl("/page/view",array("name"=>$data->name) のような引数を与える必要があります))私は今それを試してみました

于 2015-08-15T11:27:00.663 に答える
0

の要素の順序は、 の要素の順序templateと等しくなければなりませんbuttons{view}{update}として持っていますが、最初にボタンtemplateを定義しました! したがって、おそらくに変更すると問題を解決できるupdateと思います。'template'=>'{view}{update}''template'=>'{update}{view}'

于 2015-08-15T10:38:21.347 に答える