Отобразить данные модели не привязанные к БД

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
mazaev
Сообщения: 7
Зарегистрирован: 2016.08.26, 15:45

Отобразить данные модели не привязанные к БД

Сообщение mazaev »

Здравствуйте. Возник вопрос как отображать данные из модели которую я заполняю из массива
модель

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

class books extends model
{
    public $book_name;

    public function rules()
    {
        return [
            [['book_name'], 'string'],
        ];
    }

    public function attributeLabels()
    {
        return [
            'book_name' => 'Название'
        ];
    }
}
контроллер

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

public function actionChild_index()
    {
        $books = new books();
        $books ->book_name= '12311';
        $dataProvider = new ActiveDataProvider(
            ['query' => $books , 'pagination' => ['pageSize' => 10]]);
        return $this->render('test', ['dataProvider' => $dataProvider]);
    }

вид

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

<div class="child-table">

    <?php Pjax::begin(); ?>
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        [
            'attribute' => 'book_name',
            'headerOptions' => ['style' => 'width:10%'],
        ]

    ],
]); ?>
<?php Pjax::end(); ?>
</div>

у меня ошибка:
The "query" property must be an instance of a class that implements the QueryInterface e.g. yii\db\Query or its subclasses.


Спасибо за помощь.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Отобразить данные модели не привязанные к БД

Сообщение zelenin »

mazaev писал(а): 2017.10.15, 14:20 Здравствуйте. Возник вопрос как отображать данные из модели которую я заполняю из массива
в коде не вижу чтобы вы что-то заполняли из массива
mazaev писал(а): 2017.10.15, 14:20 модель

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

class books extends model
{
    public $book_name;

    public function rules()
    {
        return [
            [['book_name'], 'string'],
        ];
    }

    public function attributeLabels()
    {
        return [
            'book_name' => 'Название'
        ];
    }
}
контроллер

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

public function actionChild_index()
    {
        $books = new books();
        $books ->book_name= '12311';
        $dataProvider = new ActiveDataProvider(
            ['query' => $books , 'pagination' => ['pageSize' => 10]]);
        return $this->render('test', ['dataProvider' => $dataProvider]);
    }

вид

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

<div class="child-table">

    <?php Pjax::begin(); ?>
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        [
            'attribute' => 'book_name',
            'headerOptions' => ['style' => 'width:10%'],
        ]

    ],
]); ?>
<?php Pjax::end(); ?>
</div>

у меня ошибка:
The "query" property must be an instance of a class that implements the QueryInterface e.g. yii\db\Query or its subclasses.


Спасибо за помощь.
ActiveDataProvider не работает с моделями, а работает с запросами, которые сам внутри выполняет. Об этом и написано в ошибке.
Если хотите работать с массивом моделей, полученных вручную, юзайте ArrayDataProvider
Ответить