0

有没有办法在从 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 但不知道语法...

4

1 回答 1

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,
    ),
));

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

于 2013-05-21T06:08:00.397 回答