Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Yii2 ListView中呈现具有不同视图的项目?_Php_Listview_Yii2 - Fatal编程技术网

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

Php 如何在Yii2 ListView中呈现具有不同视图的项目?,php,listview,yii2,Php,Listview,Yii2,我需要以不同的视图显示新闻。现在,我将此代码用于演示: <?= ListView::widget([ 'dataProvider' => $dataProvider, 'itemView' => '_news', 'viewParams' => [ 'fullView' => true,

我需要以不同的视图显示新闻。现在,我将此代码用于演示:

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

我的问题是:前3个新闻节目显示大图像,另一个显示小图像。分页应该是必要的。看这个例子


请帮帮我。

列表视图的每个项目视图都有一个名为
$index
的变量,可用于实现所需的结果。在\u news.php中,您可以执行以下操作:

if($index < 3)
    $this->render('_news_big', ['model' => $model]);

else
    $this->render('_news_small', ['model' => $model]);
if($index<3)
$this->render(“'news\u big',['model'=>$model]);
其他的
$this->render(“'news\u small',['model'=>$model]);
\u news\u big.php中有大块的实际代码,在\u news\u small.php中有小块的代码

另一种方法是将两个块的代码都放在\u news.php中(尽管我不喜欢这种方法)

if($index<3)
{
//大区块代码
}
其他的
{
//小砌块代码
}
有关itemView的更多信息,请参阅

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