我正在使用 CActiveDataProvider 和 CListView 来输出名称列表。仅当名称与之前的名称相同时,我才想使用 html 将名称加粗。这些不是数据库中相同的行,只有“名称”属性相同。
例如,我想要以下内容:
Bob
Rick
Steve
Rick
Rick
George
由于我使用的是 CListView,因此我正在使用来自 $data 的信息创建部分视图,其中包含当前列表项。如何访问上一个列表项的属性?
感谢 Yii 世界的退伍军人!
我正在使用 CActiveDataProvider 和 CListView 来输出名称列表。仅当名称与之前的名称相同时,我才想使用 html 将名称加粗。这些不是数据库中相同的行,只有“名称”属性相同。
例如,我想要以下内容:
Bob
Rick
Steve
Rick
Rick
George
由于我使用的是 CListView,因此我正在使用来自 $data 的信息创建部分视图,其中包含当前列表项。如何访问上一个列表项的属性?
感谢 Yii 世界的退伍军人!
每个itemView
aCListView
都会自动传递几个变量,即:
$this
: 指此列表视图小部件的所有者。例如,如果小部件在控制器的视图中,则$this
引用该控制器。
$data
: 指当前正在渲染的数据项。
$index
: 指当前正在渲染的数据项的从零开始的索引。
$widget
: 引用此列表视图小部件实例。
(强调我的)
每个CListView
小部件都具有属性$dataProvider
,数据提供者具有以下$data
属性:
当前可用的数据项数组(意味着在当前页面中,具有当前排序等)
因此,在部分中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; ?>