Yii的CArrayDataProvider和新行

时间:2013-05-20 18:08:06

标签: yii grid master-detail cactivedataprovider

有没有办法在Grid中显示从CActiveDataProvider获取一些实际上还没有进入数据库的新行?

这是我的情景..

我必须填写X次(帐单中的产品数量),并为每一行提供编辑和保存的可能性

 Product    QTY 
 product1   3
     |
     ____  Edit item 1 (not yet in the db)
     ____  Edit item 2 (not yet in the db)
     ____  Edit item 3 (not yet in the db)

所以它有点像一个主细节网格(我已经把它分类了怎么做......) 但我无法在数据库中的网格上显示内容..

我知道我必须创建一个临时模型数组,如$ model [] = new MODEL();并以某种方式推送到CActiveDataProvider但不知道语法...

1 个答案:

答案 0 :(得分:0)

您无法使用CActiveDataProvider执行此操作,因为正如文档所述

  

CActiveDataProvider根据类型为modelClass的ActiveRecord对象提供数据。它使用AR CActiveRecord :: findAll方法从数据库中检索数据。

然而,有CArrayDataProvider。您可以在其中放置任意数据,即。将一个真实对象数组与一个空数组合并并使用它。

$rawData=array(
    array('id'=>1, 'username'=>'from', 'email'=>'array'),
    array('id'=>2, 'username'=>'test 2', 'email'=>'hello@example.com'),
  );

$arrayDataProvider=new CArrayDataProvider($rawData, array(
    'id'=>'id',
    'sort'=>array(
        'attributes'=>array(
            'username', 'email',
        ),
    ),
    'pagination'=>array(
        'pageSize'=>10,
    ),
));

正如您所看到的,这里的数据是一个简单的数组,但您甚至可以对数据进行排序。