Yii2:如何将其他参数传递给listview

时间:2016-02-08 13:16:40

标签: php listview view yii2

我在这个问题上阅读了这篇文章并回答了Songwut K.:

  

Yii2 ListView and dataprovider

但我想知道可以在_item中使用第二个模型。假设_item是论坛中的一个帖子,它从$ model中检索数据,但我想使用不同的模型,如$ comment,对我发表评论,并将评论作为一个_item与评论一起查看。想象这个项目在Facebook上发布,它只显示写这篇文章的文字,日期和用户。但我如何从其他模型添加评论呢?我只想将我的$评论传递给_item视图。

我尝试在我的控制器中添加新的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如何将其传递给_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(); ?>

但有错误:

  

未知属性 - yii \ base \ UnknownPropertyException

     

设置未知属性:yii \ widgets \ ListView :: comment

在_item我只能使用$ model。可以将我的$注释传递给_item视图吗?请帮助我

1 个答案:

答案 0 :(得分:11)

您应该只使用viewParams

  

在呈现时要传递给$itemView的其他参数。仅当$itemView是表示视图名称的字符串时才使用此属性。

e.g。 :

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