[Risolto] Cdetail + Pagination

Salve gente!! il mio problema è il seguente:

in index.php un CListView


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

	'dataProvider'=>$dataProvider,

	'itemView'=>'_view',

)); 

in _view un link ed un bottone:




echo CHtml::link(CHtml::encode($data->id), array('mycontroller/view', 'id'=>$data->id)); 

echo CHtml::button('bottonText', array('submit' => array('mycontroller/view', 'id'=>$data->id))); 



detto questo in pagina 1 funzionano entrambi.

se passo alla pagina 2 del listview il link continua a funzionare ma il bottone no… in particolare continua a riferirsi al $data->id della pagina 1

sto uscendo pazzo!!! inutile spiegarvi le ragioni per cui mi serva il bottone al posto del link :)

Buona serata!!!

soluzione :D:D:D


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

        'dataProvider'=>$dataProvider,

        'itemView'=>'_view',

        "id"=>"#comments";

            ));

Grazie comunque e spero possa servire a qualcuno ;)

se però qualcuno si sente di aggiungere una spiegazione tecnica gli sarei grato perché alla fine non so quale sia stato il problema alla base… grazie!

la spiegazione, è che in mancanza di id espliciti, yii li genera automaticamente.

ci sono casi di renderPartial annidati e altri simili in cui questo sistema fa si che esternamente ad un ‘pezzo’ della pagina di sia uno stesso id presente in un blocco più ‘interno’.

E’ buona regola inserire sempre gli id in pulsanti e widget

ok hai pienamente ragione e quello che dici è giusto nel senso che quella proprietà setta un id per il ClistView… la cosa che ancora non mi è chiara è come questo vada poi ad influire nel buon/cattivo funzionamento dei bottoni… voglio dire… non sto settando un id al bottone ma al ClistView…

una cosa curiosa che ho notato è che dopo la modifica, andando alla pagina 2, all’url viene aggiunto il suffisso _page=2 mentre nella prima versione (cioè senza id al ClistView) l’url finisce in index

alquanto curioso… <_< <_< <_< visto che si tratta di una view generata automaticamente da YII sarebbe meglio che l’id lo inserissero già loro ;)

mi è difficile spiegarti il perchè, visto che non mi è del tutto chiaro al 100% il sistema di generazione degli id interno ad Yii, tenendo conto che ho seguito il codice di Yii passo passo per debuggare una situazione simile alla tua.

In generale, sembra che annidamenti + javascript + renderPartial + id portino in casi più o meno estremi a problemi nella gestione degli id.

Sto pensando di ricavarmi una mezza giornata per creare un caso riproducibile da zero ed aprire una segnalazione di bug, ma forse è solo che ad entrambi sfugge qualche logica che ci sta dietro. E sono daccordo con te che questo comportamente è come minimo anomalo.