The "dataProvider" property must be set.

Уже исправленные репорты или принятые предложения
Ответить
proger2
Сообщения: 3
Зарегистрирован: 2015.05.08, 08:49

The "dataProvider" property must be set.

Сообщение proger2 »

Доброго вам дня уважаемые форумчане.

Я новичок в YII читаю мануал, пробую и на уроке http://guide.yii2.org-info.by/guide-ru-start-gii.html у меня вылетает ошибка


Invalid Configuration – yii\base\InvalidConfigException

The "dataProvider" property must be set.
1. in W:\domains\yii\basic\vendor\yiisoft\yii2\widgets\BaseListView.php

ОС Винда 7, Опенсервер.

YII ставил из архива. Предыдущий урок работы с БД работает, то есть БД настроена верно.

GII все файлы создал без ругани согласно уроку. Старые файлы были перезаписаны согласно учению. Не указанный в уроке
View Path указал @app/views/country

Как я понимаю проблема из-за вызова этого виджета

<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],

'code',
'name',
'population',

['class' => 'yii\grid\ActionColumn'],
],
]); ?>

В чем может быть проблема? Версия в коробке не содержит этого виджета?
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: The "dataProvider" property must be set.

Сообщение astronin »

значит вы не передал $dataProvider из контроллера во вью
proger2
Сообщения: 3
Зарегистрирован: 2015.05.08, 08:49

Re: The "dataProvider" property must be set.

Сообщение proger2 »

Значит не передал. Дело в том, что я код не писал. Это стандартный сгенерированый код Gii. Ошибка в Yii или в Gii или в винде/опенсервере какие то баги? Просто эта конструкция должна работать на ура по умолчанию. И если оно не работает уже на старте, то как двигаться дальше?

Мой php редактор пишет ошибку у модели к строке

class Country extends \yii\db\ActiveRecord

unexpocted \

однако если ее убрать, то Class 'Yii\db\ActiveRecord' not found

В контроллере на всякий случай это

<?php

namespace app\controllers;

use yii\web\Controller;
use yii\data\Pagination;
use app\models\Country;

class CountryController extends Controller
{
public function actionIndex()
{
$query = Country::find();

$pagination = new Pagination([
'defaultPageSize' => 5,
'totalCount' => $query->count(),
]);

$countries = $query->orderBy('name')
->offset($pagination->offset)
->limit($pagination->limit)
->all();

return $this->render('index', [
'countries' => $countries,
'pagination' => $pagination,
]);
}
}
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: The "dataProvider" property must be set.

Сообщение astronin »

тут надо
class Country extends yii\db\ActiveRecord

я что-то не пойму у вас куча ошибок вываливается что ли?
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: The "dataProvider" property must be set.

Сообщение mihail_dev »

astronin писал(а):тут надо
class Country extends yii\db\ActiveRecord

я что-то не пойму у вас куча ошибок вываливается что ли?
всё у него правильно скорее всего редактор не умеет работать с такими названиями классов
дабы глаз не мучало можно заменить на

Код: Выделить всё

use \yii\db\ActiveRecord;

class Country extends ActiveRecord
проблема изначальная в дата провайдере

исходя из кода контролера там вообще не сформирован дата провайдер (и этот код точно не генерил гии)
поидее у вас должно было быть что то на подобие такого

Код: Выделить всё

public function actionIndex()
{
        $searchModel = new SearchCountry();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
}
если вам надо было изменить defaultPageSize

то это можно сделать и в шаблоне

Код: Выделить всё

$dataProvider->pagination->defaultPageSize = 5;
Изображение
proger2
Сообщения: 3
Зарегистрирован: 2015.05.08, 08:49

Re: The "dataProvider" property must be set.

Сообщение proger2 »

Разобрался. Не верно указал путь для контроллера в Gii и он его в папку к моделям положил. А в папке контроллеров лежал старый контроллер с предыдущего урока. Вот и ошибка выходила. Все снес, сгенерил заново с верными путями и все заработало.

Спасибо тем кто откликнулся.
Ответить