我正在使用CActiveDataProvider和CListView输出名称列表。我想只在名称与之前的名称相同时使用html粗体显示名称。这些不是数据库中的相同行,只有'name'属性是相同的。
例如,我想要以下内容:
鲍勃
里克
史蒂夫
里克
的瑞克
乔治
由于我正在使用CListView,因此我使用来自$ data的信息创建我的部分视图,其中包含当前列表项。如何访问上一个列表项中的属性?
感谢Yii的世界老兵!
答案 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; ?>