2

我正在使用 CActiveDataProvider 和 CListView 来输出名称列表。仅当名称与之前的名称相同时,我才想使用 html 将名称加粗。这些不是数据库中相同的行,只有“名称”属性相同。

例如,我想要以下内容:
Bob
Rick
Steve
Rick
Rick
George

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

感谢 Yii 世界的退伍军人!

4

1 回答 1

6

每个itemViewaCListView都会自动传递几个变量,即:

$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; ?>
于 2013-11-04T16:57:07.797 回答