2013-05-20 1 views
0

실제로 데이터베이스에없는 몇 가지 새로운 행을 CActiveDataProvider에서 데이터를 가져 오는 Grid에 표시 할 수있는 방법이 있습니까?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) 

를 저장합니다 그것은 (.. 내가 그것을 수행하는 방법을 정리했습니다 그건) 종류의 마스터 디테일 그리드처럼 하지만 난

내가 아는 .. 데이터베이스에 아직 arren't 그리드에 일을 표시 할 수 없습니다 나는 $ model [] = new MODEL()과 같은 임시 모델 배열을 만들어야 만한다. 및

+0

'CActiveDataProvider'로 시도해 보셨습니까? – adamors

답변

0

당신 때문에 문서로 CActiveDataProvider이 할 수 없어 ... CActiveDataProvider에 어떻게 든 밀어하지만 syntaxis를 모르는

CActiveDataProvider는 액티브 오브젝트의 측면에서 데이터를 제공 말한다 클래스 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, 
    ), 
)); 

여기서 알 수 있듯이 데이터는 간단한 배열이지만 데이터를 정렬 할 수도 있습니다.