Неопределенная переменная: dataProvider в yii2

Нужна помощь в неопределенной переменной: dataProvider в yii2 Я установил расширение 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
        ],
    ]);

person vijay nathji    schedule 25.03.2016    source источник
comment
опубликуйте свой полный код.   -  person GAMITG    schedule 25.03.2016
comment
Вам нужно отредактировать код, который вы забыли включить в свой вопрос, а не публиковать его как ответ. Я не могу понять это достаточно, чтобы сделать это, хотя.   -  person Flexo    schedule 23.06.2016
comment
@Flexo♦: я только начал использовать stackoverflow. Я не был знаком с правилами. Теперь я узнал все о размещении вопросов и ответов, редактировании и т. д., но, к сожалению, я заблокирован и теперь не могу публиковать новые вопросы и получаю следующую ошибку. Вы достигли лимита вопросов Извините, мы больше не принимаем вопросы от этого аккаунта. Посетите Справочный центр, чтобы узнать больше. помогите пожалуйста как выйти из этого бана.?? я уже отредактировал все свои вопросы.   -  person vijay nathji    schedule 24.06.2016
comment
Вы не редактировали это...   -  person Flexo    schedule 24.06.2016
comment
@Flexo♦ Отредактировано.. Помогите, пожалуйста, как выйти из бана..   -  person vijay nathji    schedule 24.06.2016
comment
@Nana Partykar: Я получаю это сообщение уже много дней. Вы достигли лимита вопросов Извините, мы больше не принимаем вопросы от этого аккаунта. Посетите Справочный центр, чтобы узнать больше. не могли бы вы помочь мне выйти из этого запрета.??   -  person vijay nathji    schedule 27.06.2016


Ответы (2)


В вашем контроллере вы должны передать все переменные, которые должны отображаться в представлении, в метод рендеринга, который вы вызываете в конце контроллера:

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

Или вы можете вызвать compact() следующим образом:

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

См. также: действия Yii2

Надеюсь это поможет.

person Nikolay Traykov    schedule 25.03.2016

Ваше представление ожидает, что вы передадите переменную dataProvider в действие вашего контроллера.

Поэтому убедитесь, что у вас есть что-то подобное в вашем действии контроллера:

return $this->render('index', [
    'dataProvider' => $dataProvider,
]);
person ttdijkstra    schedule 25.03.2016
comment
я сделал это также в своем коде контроллера, но все еще показывал неопределенную переменную: dataProvider - person vijay nathji; 25.03.2016
comment
@vijaynathji Тогда вы обязательно должны показать нам действие вашего контроллера. - person Nikolay Traykov; 25.03.2016
comment
По какому адресу вы получаете эту ошибку? Вы уверены, что редактируете правильные файлы контроллера/представления? - person ttdijkstra; 25.03.2016