2013-11-04 37 views
2

我正在使用CActiveDataProvider和CListView來輸出名稱列表。我只想在名稱與之前的名稱相同的情況下使用html加粗名稱。這些在數據庫中不是相同的行,只有'name'屬性是相同的。Yii訪問CListView中的以前的數據部分

例如,我想以下幾點:
鮑勃
裏克
史蒂夫
裏克
裏克
喬治

由於我使用CListView中,我創建了我的偏查看使用$ data中的信息,其中包含當前列表項。如何訪問上一個列表項中的屬性?

感謝世界各地的Yii老兵!

+0

您應該簡單地創建一個臨時變量以保留以前的名稱 – soju

+0

如何創建臨時變量,以便在呈現某個名稱時可以在clistitem中設置局部變量,並在局部視圖中爲下一個名稱訪問它? – James

+0

Juste使其成爲全球 – soju

回答

6

一個CListView的每個itemViewpassed a few variables automatically是,即:

$this:參照該列表視圖微件的所有者。例如,如果小部件處於控制器的視圖中,則$this涉及控制器。
$data:引用當前正在呈現的數據項。
$index:引用當前正在呈現的數據項的從零開始的索引。
$widget:引用此列表視圖窗口小部件實例。

(重點煤礦)

而且每個CListView插件具有property $dataProvider,和一個數據提供者具有這樣的特性$datawhich is

當前可用的數據項的數組(在當前頁面中的含義,以及當前排序等)


所以在部分itemView我們可以訪問整個數據集dataProvider的,就像這樣:

$widget->dataProvider->data; 

對於你的榜樣,這樣的事情應該工作:

<?php 
    if ($index > 0 && $widget->dataProvider->data[$index-1]->name == $data->name): 
?> 
    <b><?php echo $data->name; ?></b> 
<?php else: 
    echo $data->test_message; 
?> 
<?php endif; ?>