Yii从CListView部分中访问以前的数据项

时间:2013-11-04 02:47:01

标签: php listview yii partial cactivedataprovider

我正在使用CActiveDataProvider和CListView输出名称列表。我想只在名称与之前的名称相同时使用html粗体显示名称。这些不是数据库中的相同行,只有'name'属性是相同的。

例如,我想要以下内容:
鲍勃 里克
史蒂夫
里克
瑞克
乔治

由于我正在使用CListView,因此我使用来自$ data的信息创建我的部分视图,其中包含当前列表项。如何访问上一个列表项中的属性?

感谢Yii的世界老兵!

1 个答案:

答案 0 :(得分:6)

itemView的每个CListView都是passed a few variables automatically,即:

  

$this:指的是此列表视图窗口小部件的所有者。例如,如果窗口小部件位于控制器的视图中,则$this指向控制器   $data:指当前正在呈现的数据项   $index:指当前正在呈现的数据项的从零开始的索引    $widget:引用此列表视图窗口小部件实例。

(强调我的)

每个CListView小部件都有property $dataProvider,数据提供商的属性为$data which 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; ?>