Fastidioso Difetto Nel Crud Fatto Con Gii

Ho notato un fastidioso difetto nella generazione automatica del crud.

Sei nell’action /admin e quindi la view ti presenta la griglia zii.widgets.grid.CGridView

filtri per x campi

vai alla 3° pagina della griglia

clicchi sulla lente per visualizzare il dettaglio

A questo punto ecco il difetto:

clicchi su Manage … per tornare alla griglia ed ecco che la griglia ha perso filtri e paginazione,

rendendo di fatto l’applicazione poco funzionale.

C’è qualcuno che ha già risolto il difetto?

Non è un difetto: quando fai click su manage ricarica la pagina. E’ normale. Se vuoi ovviare al problema, ti potrebbe bastare la memorizzazione della pagina corrente in una sessione. Ma tieni presente che la pagina potrebbe non esistere più quando torni.

ma tu come fai nei tuoi lavori?

prima di usare yii, noi avevamo un’altra libreria, fatta in casa e risolvevamo così

quando aggiorni la pagina della lista, si aggiornava via javascript (oppure settando un input field nascosto) anche uno dei parametri che sono linkati dal comando ‘view’ (che avrà già l’id del record da vedere, giusto).

Nella pagina di ‘view’ o di ‘update’, un campo nascosto veniva popolato col parametro passato, cosa che si fa anche con yii definendo un camoo NON di db come hidden a livello html e ‘safe’ nell’elenco dei campi definiti nel model, giusto ?

A questo punto fai si che il codice che genera il link ‘Manage’ aggiunga l’info sulla pagina su cui si trovava, per cui pui prefiltrare la lista passandogli i limit

Ovviamente questa è solo una idea, e l’effettiva praticabilità con yii nei dettagli è nettamente fuori della mia attuale competenza in materia

oppure poi visualizzare il dettaglio in ajax, con un dialog o con una view a comparsa…

così la pagina sotto rimane ferma.

Lascio le cose come stanno. Se il cliente non mi chiede espressamente di fare quella modifica, non la faccio.

Ci sono due soluzione, una veloce e una lenta.

Quella lenta consiste nel memorizzare i dati (nella session e’ molto comodo) e poi usarli per caricare di default la grid. (Ricorda che ai motori di ricerca non piace quando usi la session, non piace che ad uno stesso url possano corrispondere diversi contenuti)

La soluzione veloce consiste nel dire in modo burbero e scortese al cliente:

"Che problemi avete coi tab? aprite la view in un nuovo tab, no?"

Grazie a tutti per le idee/soluzioni.

Quando mi sono avvicinato ad Yii e vidi per la prima volta lo screencast su come era semplice realizzare una logica di crud,

mi sono letteralmente esaltato e mi son passato alcune piacevoli/ossessive giornate a parlare con Sensorario, Paskuale & company

Poi come sempre si cresce e quello che prima era stupendo, diventa la norma e si chiede sempre di più.

Quindi so bene che la miglior soluzione che richiede tempo è quella delle sessioni,

ma il mio egoismo nei confronti di chi sviluppa Yii, mi porta a commentare:

"ehi sviluppatori, ma già che avete realizzato sta figata di framework non potevate pensare ad implementare nel gii anche il discorso delle sessioni?"

Zaccaria/Sensorario in fondo al vostro cuoricino lo sapete che un lavoro ben fatto richiederebbe anche questo sbattimento,

senza che il cliente lo richieda esplicitamente…

e poi sugli smartphone che son sempre più diffusi non funzionerebbe il discorso "nuovo tab"