yii框架:$ dataProvider如何获取数据及其工作原理?

时间:2014-05-15 02:58:45

标签: php yii

我正在学习YII框架,而且我处于初学者水平。

我创建了一个CRUD选项,我发现以下脚本是我的视图文件

<?php $this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_view',
)); ?>

但是我不明白$ dataprovider如何从数据库中获取数据,我没有在Model类上看到任何相关函数,我怎样才能更新数据是$ dataprovide,(我必须替换一个外来的密钥与正确的数据,即family_id与family_name)

1 个答案:

答案 0 :(得分:1)

Yii数据提供程序(有许多,最简单的方法是使用CActiveDataProvider)只是可用于填充网格(例如CGridView窗口小部件)的数据容器或

控制器是应用程序的一部分,数据提供给您的视图。您可能在控制器中有一行或两行代码,您可以在其中创建此数据提供程序,以便将其发送到视图中。

您可以自己创建数据提供者(documentation of class CActiveDataProvider),只需实例化它,但如果您使用 gii 或某些simlitar设备生成模型,那么您的模型类应该具有一个search()方法。这是为您创建的辅助方法,因此您无需自己实例化数据提供程序。 (调用此方法时,将返回新的CActiveDataProvider

正如我所说,数据提供者只是模型的容器。在您的情况下,(当您创建CListView)时,它可能只包含一个模型(您尝试显示其详细信息的模型)。数据提供者也可以用于网格,在这种情况下,一个数据提供者将拥有一个而不是多个模型(通常,每个网格行一个)。

ps:如果您需要更改外键和/或属性名称等内容,则需要在Model类(即ActiveRecord)中进行更改,而不是数据提供者。数据提供程序 - 以及您使用的任何小部件 - 仅用于显示目的。