如何在Yii2 ListView中呈现具有不同视图的项目?

时间:2015-11-02 16:32:23

标签: php listview yii2

我需要以不同的观点显示新闻。现在我使用此代码进行演示:

 <?= ListView::widget([
                   'dataProvider' => $dataProvider,
                   'itemView' => '_news',
                   'viewParams' => [
                       'fullView' => true,
                       'context' => 'main-page'
                   ]
               ]);
                ?>

我的问题是:前3个新闻节目有大图片,另一个有小图片。分页应该是必要的。看这个例子 enter image description here

请帮助我。

1 个答案:

答案 0 :(得分:2)

列表视图的每个项目视图都有一个名为if($index < 3) $this->render('_news_big', ['model' => $model]); else $this->render('_news_small', ['model' => $model]); 的变量,可用于实现所需的结果。在 _news.php 中,您可以执行以下操作,

if($index < 3)
{
    //Code for big block
}
else
{
    //Code for small blocks
}

获取 _news_big.php 中大块的实际代码以及 _news_small.php 中小块的代码。

另一种方法是将两个块的代码放在 _news.php 中,(虽然我不喜欢这种方法)

monetize :price_cents

有关itemView的更多信息,请参阅http://www.yiiframework.com/doc-2.0/yii-widgets-listview.html#$itemView-detail