CGridView e relazioni

Tabelle:

prodotti (idprodotto, descrizione, idcategoria, idcolore)

categorie (idcategoria, descrizione)

colori (idcolore, descrizione)

Relazioni

‘idcolore0’ => array(self::BELONGS_TO, ‘Colori’, ‘idcolore’),

‘idcategoria0’ => array(self::BELONGS_TO, ‘Categorie’, ‘idcategoria’)

All’interno di categorie/view/{idcategoria} oltre al dettaglio della categoria voglio mostrare una cgridview (provvista di pulsanti di gestione e campi di ricerca) con l’elenco dei prodotti appartenenti alla categoria.

Le colonne sarebbero:

-descrizione(prodotti.descrizione)

-colore(colori.descrizione)

Qual’è il modo corretto di agire?

Chiedo scusa se la domanda sembra generica e sicuramente trattata altrove, ma avevo aperto un topic con tutte le prove che ho fatto e in 4 giorni ha ricevuto 100 visite e 0 risposte.

Grazie in anticipo per eventuali risposte.

Se vuoi la CGridView, perché non ce la metti? La prima cosa che farei, è prendere la pagina admin del tuo crud (li trovi un CGridView), quindi modificherei in modo opportuno il model e le colonne. In particolare il model sarà una sorta di Prodotti::model()->findAll(‘idcategoria=’.$idcategoria); e così via.

Nella prova precedente avevo creato views/categorie/_prodotti che visualizzava proprio una CGridView il cui dataprovider era Prodotti::model()->customSearch($idcategoria), la visualizzazione era perfetta avevo aggiustato anche i link dei vari pulsanti ma la ricerca proprio non andava. A quanto ho capito nel metodo di ricerca i dati vengono inviati come $_GET[{model}][{nomecolonna}] e nei vari compare del cdbcriteria basta fare $this->{nomecolonna} per reperirli. Tuttavia nel mio caso non funzionava, nel senso che $this->{nomecolonna} era sempre null.

Ora ho provato a fare come mi hai consigliato, cioè a modificare views/prodotti/admin, che richiamo con renderpartial e a cui invio l’id della categoria, come dataprovider utilizzo Prodotti::model()->findAll(“idcategoria=”.$idcategoria), ma ottengo il seguente errore:

Call to a member function getData() on a non-object in C:\wamp\www\yii-1.1.8.r3324\framework\zii\widgets\CBaseListView.php on line 105