Yii2: как передать дополнительные параметры в listview
Я читаю этот пост и отвечаю на этот вопрос Сонгвут к.:
Но я хочу знать, что можно использовать вторую модель в _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? Пожалуйста, помогите мне
1 ответ:
Вы должны просто использовать
viewParams:Дополнительные параметры, которые будут переданы в
$itemViewпри его визуализации. Это свойство используется только в том случае, если$itemViewявляется строкой, представляющей имя представления.Например:
<?= ListView::widget( [ 'dataProvider' => $dataProvider, 'itemView' => '_item', 'viewParams' => ['comment' => $comment], 'summary'=>'', ]); ?>
Comments