未定义的变量:yii2中的dataProvider

时间:2016-03-25 12:31:32

标签: yii yii2 yii-extensions yii2-advanced-app yii2-basic-app

在Uniifined中需要帮助:yii2中的dataProvider 我已经安装了kartik gridview扩展。     我是YII2的新人。     试图建立网格。     请帮忙。

  

获得以下错误
      PHP注意 - yii \ base \ ErrorException       未定义的变量:dataProvider

这是我的控制器代码

echo GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => $gridColumns,
        'containerOptions' => ['style'=>'overflow: auto'], // only set when $responsive = false
        'beforeHeader'=>[
            [
                'columns'=>[
                    ['content'=>'Header Before 1', 'options'=>['colspan'=>4, 'class'=>'text-center warning']], 
                    ['content'=>'Header Before 2', 'options'=>['colspan'=>4, 'class'=>'text-center warning']], 
                    ['content'=>'Header Before 3', 'options'=>['colspan'=>3, 'class'=>'text-center warning']], 
                ],
                'options'=>['class'=>'skip-export'] // remove this row from export
            ]
        ],
        'toolbar' =>  [
            ['content'=>
                Html::button('<i class="glyphicon glyphicon-plus"></i>', ['type'=>'button', 'title'=>Yii::t('kvgrid', 'Add Book'), 'class'=>'btn btn-success', 'onclick'=>'alert("This will launch the book creation form.\n\nDisabled for this demo!");']) . ' '.
                Html::a('<i class="glyphicon glyphicon-repeat"></i>', ['grid-demo'], ['data-pjax'=>0, 'class' => 'btn btn-default', 'title'=>Yii::t('kvgrid', 'Reset Grid')])
            ],
            '{export}',
            '{toggleData}'
        ],
        'pjax' => true,
        'bordered' => true,
        'striped' => false,
        'condensed' => false,
        'responsive' => true,
        'hover' => true,
        'floatHeader' => true,
        'floatHeaderOptions' => ['scrollingTop' => $scrollingTop],
        'showPageSummary' => true,
        'panel' => [
            'type' => GridView::TYPE_PRIMARY
        ],
    ]);

2 个答案:

答案 0 :(得分:1)

您的视图希望您在控制器操作中传递dataProvider变量。

因此,请确保在控制器操作中有类似的内容:

return $this->render('index', [
    'dataProvider' => $dataProvider,
]);

答案 1 :(得分:0)

在您的控制器中,您必须将视图中必须出现的所有变量传递给您在控制器末尾调用的渲染方法:

return $this->render('viewName', [
    'dataProvider' => $dataProvider,
    // ... Other fields
]);

或者您可以像这样致电compact()

return $this->render('viewName', compact('dataProvider'));

另请参阅:Yii2 actions

希望这有帮助。