未定义的变量:yii2 中的 dataProvider

Undefined variable: dataProvider in yii2

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

Getting Following error
PHP Notice – yii\base\ErrorException Undefined variable: 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
        ],
    ]);

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

所以请确保您的控制器操作中有这样的内容:

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

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

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

或者您可以这样调用 compact()

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

另请参阅:Yii2 actions

希望对您有所帮助。