Carraydataprovider E Cgridview

Ho un sommario movimenti mensili che ho trasformato in un CArrayDataProvider




$monthly_summary = new CArrayDataProvider( $raw_summary , array(

    'id'=>'period',

    'pagination'=>array(

        'pageSize'=>12,

    ),

));




Ho provato, per debug, a fare il print_r ottenendo questo




CArrayDataProvider Object ( [keyField] => id [rawData] => Array ( [0] => Array ( [period] => 2013-01 [positive] => 10000 [negative] => 0 ) [1] => Array ( [period] => 2013-02 [positive] => 0 [negative] => -21934000 ) [2] => Array ( [period] => 2013-03 [positive] => 0 [negative] => -83013000 ) [3] => Array ( [period] => 2013-04 [positive] => 0 [negative] => -4527000 ) ) [caseSensitiveSort] => 1 [_id:CDataProvider:private] => period [_data:CDataProvider:private] => [_keys:CDataProvider:private] => [_totalItemCount:CDataProvider:private] => [_sort:CDataProvider:private] => [_pagination:CDataProvider:private] => CPagination Object ( [pageVar] => period_page [route] => [params] => [validateCurrentPage] => 1 [_pageSize:CPagination:private] => 12 [_itemCount:CPagination:private] => 0 [_currentPage:CPagination:private] => [_e:CComponent:private] => [_m:CComponent:private] => ) [_e:CComponent:private] => [_m:CComponent:private] => ) 



… Questo mi dice che sta funzionando , no ?

Allora adesso provo a cacciare il tutto dentro ad una grid




$this->widget('bootstrap.widgets.TbGridView',array(

    'id'=>'transaction-grid',

    'dataProvider'=> $monthly_summary,

    'template' => '{items}{pager}',

    'columns'=>array(

        'period',

        'positive',

        'negative',

    ),

)); 



Il problema è questo errore …

Inizialmente pensavo di essermi dimenticato di associare una colonna dell’array quale id univoco, ma, come vedete nel primo snippet di codice, l’ho fatto

Cosa sto dimenticando ?!

Incredibile, basta postare una domanda sul forum e si trova da sola la soluzione.

nel creare l’arrayDataProvider dovevo fare anche




 "keyField" => 'period'



altrimenti questo rimane impostato di default su ‘id’

Ciao a tutti,

premetto che sono ipernuovo di questo forum,infatti e’ il primo commento che posto,e di yii in generale,quindi abbiate pazienza se sembrero’ avere la stessa comprensione di un bambino di pochi mesi. ^_^

Sperando di non aver sbagliato dove farlo,vi posto il ‘problema’:

allora ho un database,con 4 tabelle: organizzazione1,organizzazione2,organizzazione3,organizzazione4.

In ognuna di queste ci sono informazioni che vorrei visualizzare in una tabella in una View ‘organizzazione.php’,attraverso una CGridView.

Per ognuna delle 4 tabelle ho creato un Model attraverso gii.

Il problema e’ che se voglio visualizzare una sola tabella andando a prendere i valori da una tabella del database(es. organizzazione1) non ho problemi.

Se invece voglio visualizzare nella stessa vista organizzazione.php ,4 diverse tabelle,prendendo i rispettivi valori dalle 4 tabelle del database non so come fare.

Mi visualizza come errore: Undefined variable: dataProvider1

Vi posto il codice cosi’forse è piu’ chiaro(anche se mi vergogno come un ladro,ci saranno una miriade di orrori :blink:xD ):

Controller:

public function actionOrganizzazione()

{


	{


		$posts = Organizzazione1::model()->findAll();


		$dataProvider=new CActiveDataProvider('Organizzazione1',array(


				'id'=>'organizzazione-grid',


				));


	        $posts1 = Organizzazione4::model()->findAll();


		$dataProvider1=new CActiveDataProvider('Organizzazione4',array(


				'id'=>'organizzazione4-grid'


                                    ));


		            $this->render('organizzazione',array(


                                    'dataProvider'=>$dataProvider,


				'dataProvider'=>$dataProvider1,


		));			


	}


}

View:

<?php

$this->widget(‘zii.widgets.grid.CGridView’, array(

'id'=&gt;'organizzazione-grid',


	'dataProvider'=&gt;&#036;dataProvider,


'columns' =&gt; array(


		array(           


				'name'=&gt;'nome',


				'value'=&gt;'&#036;data-&gt;nome',


		),


		array(


				'name'=&gt;'cognome',


				'value'=&gt;'&#036;data-&gt;cognome',


		),


		array(


				'name'=&gt;'email',


				'value'=&gt;'&#036;data-&gt;email',


		), 		

)));

?>

<?php

$this->widget(‘zii.widgets.grid.CGridView’, array(

'id'=&gt;'organizzazione4-grid',


	'dataProvider'=&gt;&#036;dataProvider1,


'columns' =&gt; array(


		array(           


				'name'=&gt;'nome',


				'value'=&gt;'&#036;data-&gt;nome',


		),


		array(


				'name'=&gt;'cognome',


				'value'=&gt;'&#036;data-&gt;cognome',


		),


		array(


				'name'=&gt;'email',


				'value'=&gt;'&#036;data-&gt;email',


		), 		

)));

Grazie in anticipo :rolleyes:

devi correggere questo:




$this->render('organizzazione',array(

'dataProvider'=>$dataProvider,

'dataProvider'=>$dataProvider1,


in


$this->render('organizzazione',array(

'dataProvider'=>$dataProvider,

'dataProvider1'=>$dataProvider1,