Доброго вам дня уважаемые форумчане.
Я новичок в 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'],
],
]); ?>
В чем может быть проблема? Версия в коробке не содержит этого виджета?
The "dataProvider" property must be set.
Re: The "dataProvider" property must be set.
значит вы не передал $dataProvider из контроллера во вью
Re: The "dataProvider" property must be set.
Значит не передал. Дело в том, что я код не писал. Это стандартный сгенерированый код 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,
]);
}
}
Мой 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,
]);
}
}
Re: The "dataProvider" property must be set.
тут надо
class Country extends yii\db\ActiveRecord
я что-то не пойму у вас куча ошибок вываливается что ли?
class Country extends yii\db\ActiveRecord
я что-то не пойму у вас куча ошибок вываливается что ли?
- mihail_dev
- Сообщения: 243
- Зарегистрирован: 2013.07.17, 00:51
- Откуда: Молдова
- Контактная информация:
Re: The "dataProvider" property must be set.
всё у него правильно скорее всего редактор не умеет работать с такими названиями классов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,
]);
}
то это можно сделать и в шаблоне
Код: Выделить всё
$dataProvider->pagination->defaultPageSize = 5;
Re: The "dataProvider" property must be set.
Разобрался. Не верно указал путь для контроллера в Gii и он его в папку к моделям положил. А в папке контроллеров лежал старый контроллер с предыдущего урока. Вот и ошибка выходила. Все снес, сгенерил заново с верными путями и все заработало.
Спасибо тем кто откликнулся.
Спасибо тем кто откликнулся.