2013-05-20 34 views
0

有沒有一種方法可以顯示在網格中,從CActiveDataProvider中將數據從數據庫中取出來,但實際上還沒有進入數據庫?Yii的CArrayDataProvider和新行

,這裏是我的情況..

我有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

你用'CActiveDataProvider'試過了嗎? – adamors

回答

0

你不能因爲文檔與CActiveDataProvider做到這一點說

CActiveDataProvider在其中的ActiveRecord對象來提供數據類modelClass。它使用AR CActiveRecord :: findAll方法從數據庫中檢索數據。

但是,有CArrayDataProvider。你可以在其中放入任意數據,即。將一組真實對象與一組空實體合併並使用它們。

$rawData=array(
    array('id'=>1, 'username'=>'from', 'email'=>'array'), 
    array('id'=>2, 'username'=>'test 2', 'email'=>'[email protected]'), 
); 

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

正如您所看到的,這裏的數據是一個簡單的數組,但您甚至可以對數據進行排序。