使用数组作为CGridView的数据源

Tom*_*m T 8 php yii

我希望这将工作..我正在编写和开发票应用程序,并希望将当前发票保存在一个阵列中,可以放在一个blob字段中.这也可用于存档更改等.

使用CGridView显示发票的销售项目.唯一的问题是所有文档都说数据源应该是IDataProvider.我不想将整个对象存储在我的Db中,但类似于此:

invoice->array(
                InvoiceHeader->array(//header information),
                InvoiceItems->array(
                                   item_1->array( 
                                                 item_id-> '1',
                                                 item_count->'3',
                                                 ....
                                                 ),
                                   ),
               ),
Run Code Online (Sandbox Code Playgroud)

我想在我看来这样做:

$this->widget('zii.widgets.grid.CGridView', array(
               'dataProvider'=>$this->invoiceItems,
              ));
Run Code Online (Sandbox Code Playgroud)

- 边注.永久存储是一系列表,这将用于保存活动记录包含浏览器错误等.当前系统直接在表中执行此操作但导致非并发发票号和不准确的统计信息.

Muk*_*oni 15

你可以先在CArrayDataProvider中包装你的数组,然后在CGridView中使用它 -

$invoiceItemsDataProvider = new CArrayDataProvider($this->invoiceItems);
$this->widget('zii.widgets.grid.CGridView', array(
               'dataProvider'=>$invoiceItemsDataProvider,
              ));
Run Code Online (Sandbox Code Playgroud)