Dataprovider e model

Buongiorno ragazzi,

ho creato con gii 2 model e 2 crud, chiamati test1 e test2.

Se volessi che il dataprovider di test1 si riferisse a quello di test2, come dovrei fare?

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

'id'=>'test-grid',


'dataProvider'=>$model->search(),


'filter'=>$model,


......


    ......

$model si riferisce a quello di test1…io voglio riferirmi a test2!

Grazie!

Per prima cosa devi andare nel model di test1 e definire la relazione. Facciamo un esempio pratico.

Sopponiamo di avere la tabella utenti e la tabella ruoli più o meno così formate:

=utenti=

id

username

nome

cognome

idruolo

=ruoli=

id

nomeruolo

A questo punto, dobbiamo dire al model Utenti che ha una relazione con il model Ruoli:


<?php


class Tags extends CActiveRecord {


    ...

    

    public function relations() {

        return array(

            'ruolo' => array(self::BELONGS_TO, 'Ruoli', 'idruolo')

        );

    }


    ...

    

}

Adesso, quando richiamiamo il CGridView, dobbiamo specificare il campo. Nota come viene indicata la relazione che è stata aggiunta nel model. Nota anche che quella relazione, ti permette di indicare il nome del campo nell’altra tabella.




<?php

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

        'id' => 'utenti-grid',

        'dataProvider' => $model->search(),

        'filter' => $model,

        'columns' => array(

            'username',

            'nome',

            'cognome',

            'ruolo.nomeruolo',

            array(

                'class' => 'CButtonColumn',

            ),

        ),

    ));

?>



E se la mia risposta ti è piaciuta… non è che ti andrebbe di cliccare sul + verde in basso a destra =)???

sei un grande!:D

Io go risolto inserendo in view/admin $model2=new Test(‘search’); ottenendo

<?php

	&#036;model2=new Test('search');

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

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


'dataProvider'=&gt;&#036;model2-&gt;search(),


'filter'=&gt;&#036;model2,


'columns'=&gt;array(


	'codice_fiscale_paziente',


	array(


		'class'=&gt;'CButtonColumn',


	),


),

)); ?>

e funziona!:D