Yii2: как передать дополнительные параметры в listview



Я читаю этот пост и отвечаю на этот вопрос Сонгвут к.:




Yii2 ListView и dataprovider




Но я хочу знать, что можно использовать вторую модель в _item. Предположим, что _item-это сообщение на форуме, которое извлекает данные из $model, но я хотел бы использовать другую модель, например $comment для меня комментарий к этому сообщению и просматривать сообщение вместе с комментарием как один _item. Представьте себе, что этот пункт является постом на facebook, и он отображает только текст, дата и пользователь, который пишет этот пост. Но как я могу добавить комментарий к этому из другой модели? Я просто хочу передать свой $ comment в _item view.

Я пытался добавить новый Commnet в мой контроллер:



public function actionIndex()
{
$model = new NewsForm();
$searchModel = new NewsSearch();
$comment= new UrComment();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->setSort(['defaultOrder' => ['Id'=>SORT_DESC]]);

if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$model->saveNews();
return $this->redirect(['/content/news']);
} else {
return $this->render('index', [
'model' => $model,
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'comment' => $comment
]);
}
}


И передайте это в индекс. Но я могу использовать свой $comment только в index как я могу передать это _item? я попробовал это:



 <?php
echo ListView::widget( [
'dataProvider' => $dataProvider,
'itemView' => '_item',
'summary'=>'',
'comment' => $comment
]); ?>


И попробовал в моем _item:



<?= $model->getStatus($model->cnNewsContentType_Id); ?> <br>
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($comment, 'Text')->textInput(['maxlength' => true])->label('Treść') ?>
<?php ActiveForm::end(); ?>


Но есть ошибка:




Неизвестное свойство-yiibaseUnknownPropertyException



Установка неизвестна свойство: yii widgetsListView:: comment




В _item я могу использовать только $model. Можно ли передать мой $ comment в _item view? Пожалуйста, помогите мне

998   1  

1 ответ:

Вы должны просто использовать viewParams :

Дополнительные параметры, которые будут переданы в $itemView при его визуализации. Это свойство используется только в том случае, если $itemView является строкой, представляющей имя представления.

Например:

<?= ListView::widget( [
    'dataProvider' => $dataProvider,
    'itemView' => '_item',
    'viewParams' => ['comment' => $comment],
    'summary'=>'', 
]); ?>

Comments

    Ничего не найдено.