Problemi con renderPartial(), CJuiDialog, AJAX, etc

Salve a tutti!

Vorrei esporre un problema che considero abbastanza importante riguardo alla gestione degli script in Yii.

E’ una cosa abbastanza evidente quando ad esempio vogliamo renderizzare un popup (widget CJuiDialog) attraverso una vista parziale via AJAX.

Ci sto combattendo da qualche giorno e vorrei trovare il modo più logico possibile per risolvere ed usare la classe CClientScript per la gestione degli script in modo automatico senza escludere manualmente alcuni ‘core scripts’ che vengono caricati di nuovo quando invece non dovrebbero.

Prima di me, zaccaria ha esposto questo problema insieme ad una propria soluzione, in attesa di una soluzione ufficiale, pero sembra che il team di sviluppo non abbia ancora risolto non abbia una soluzione adeguata per questo.

Se qualcuno ha qualche idea a riguardo può includerla in questa discussione…

Grazie!

Non vorrei spegnere le tue speranze, ma la mia soluzione riguarda solo il client script “minuto”, tipo gli script dei bottoni o dei widget, non i file di script (jquery, jquery ui), quelli e’ meglio includerli nella pagina principale.

Quello che fa la mia roba (di cui vorrei fare una pratica estensione, ma in questi giorni al lavoro non ho tempo neanche per p…are) e’ di raccogliere il client script di una subview e scriverlo sotto la subvew stessa.

Con questo sitema si puo’ fare a meno della renderPartial(’’,’’, false, true) che ricarica i file degli script.

Non risolve neanche il problema degli id duplcati (se ho un bottone nel layout, questo prendera id ‘yt0’, e il primo bottone che generemo nella subiew per risponder alla ajaxrequest avra’ anche lui id ‘yt0’, con le conseguenza che potete immaginare).

Tuttavia, dando manualmente ad ogni elemento un suo proprio id, la mia scatoletta fa il suo mestiere e risolve (almeno per me) questo annoso problema.

Devo dire, ad onor del vero, che la mia soluzione fa esattamente quello che Quiang dice di fare, per cui non c’e’ nessuna contraddizione.

Chi ha altre idee?