2015-11-02 54 views
0

我需要用不同的視圖顯示新聞。現在我用這個代碼演示:如何在Yii2 ListView中渲染具有不同視圖的項目?

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

我的問題是這樣的:前3點新聞節目與大型圖像,其他顯示小圖像。分頁應該有效。看到這個例子 enter image description here

請幫助我。

回答

2

列表視圖的每個項目視圖都有一個名爲$index的變量,可用於實現所需的結果。在_news.php你能做到以下幾點,

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

else 
    $this->render('_news_small', ['model' => $model]); 

並有大塊_news_big.php實際的代碼和_news_small.php爲小塊代碼。

做的另一種方法是將代碼爲兩個區塊內_news.php,(雖然我不喜歡這種方法)

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

有關ItemView控件的更多信息,請參考http://www.yiiframework.com/doc-2.0/yii-widgets-listview.html#$itemView-detail