有没有办法在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但不知道语法...
答案 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,
),
));
正如您所看到的,这里的数据是一个简单的数组,但您甚至可以对数据进行排序。