come bisogna fare per salvare la sessione dell’ utente?
Mi spiego meglio. Se un utente sta compilando un form o svolgendo altre operazioni nell’ applicazione e il browser si blocca o si chiude accidentalmente come posso fare per far si che l’ utente riparta da dove era arrivato?
Se avete un link (o un’ esempio) che possa tornarmi utile per imparare mi fa piacere!!!
Grazie della risposta. Non è possibile salvale la sessione dell’ utente e ricarla, dal punto dove era rimasto (se non è stato validato il form) in caso si disconnetta? L’ ho visto fare in un sito, per questo chiedo informazioni. Praticamente la sessione aveva una durata…se tu iniziavi a compilare il form (mettiamo sia in 3 step) e arrivavi al secondo step, poi non continuavi a compilare per 5 minuti, la sessione scadeva. Se ti riloggavi ripartivi dal punto in cui eri rimasto.
Da come hai descritto il procedimento mi puzza di salvataggio su db… se tutto venisse gestito in sessione non sarebbe necessario riloggarsi per fare il retrieve dello step, credo.
Il problema principale non è tanto sapere a quale step l’utente è arrivato (quello si potrebbe fare anche tramite un cookie), quanto salvare i dati degli step precedenti. Per essere consistente ti serve salvare tutto su un db. Già che fai questo, ti salvi anche l’ultimo step cui l’utente è arrivato.
Tutto questo as far as I know, magari altri utenti del forum sanno darti un’alternativa.
Non mi è molto chiaro. Stai salvando tutti i tuoi dati post dentro uno state, in modo da portarti appresso tutti gli input dell’utente?
Quello che suggerivo io era di separare gli step e il salvataggio dei dati ad ogni cambio: al primo si fa una insert, dal secondo in poi una update dello stesso record.
Tu invece stai usando il metodo save() solo nello step finish.
Insisto sulla mia linea perché anche se tu riuscissi a far funzionare il form stateful come stai cercando di fare, ti rimane comunque il problema della sessione.
Oppure non ho capito bene io quali sono i tuoi termini.
Ecco lo sapevo che il mio metodo non era quello esatto ufffff!!! Come posso dividerlo come dici tu? Cioè l’ insert lo dovrei fare con la query? Non so farlo come dici tu…Ho dovuto leggere un bel po di forum e guide per arrivare a fare questo che sto facendo. Yii per me è nuovo. Puoi aiutarmi SomethingWicked? Comunque per ora grazie dei consigli e per aver bloccato i miei tentativi (ovviamente falliti) di arrivare dove voglio arrivare, seguendo la strada sbagliata!!! L’ ho detto che ci sto uscendo matto con questo form!!!
Io una cosa simile l’avevo fatta salvando gli step nel database come “temporaneo” del modello, mi spiego:
Al completamento del primo step viene creato il record e vengono inseriti i dati richiesti nel primo form, nei successivi step il record viene aggiornato con i dati inseriti nei vari forms.
Per sapere a che punto l’utente è arrivato uso un campo “step” nella tabella che viene incrementato ad ogni passaggio.
Nel mio caso poi ogni record ha anche un campo “autore” e grazie a questo, quando l’utente effettua il login, riesco a sapere se ha dei form da completare.
Se hai un solo form invece, puoi fare il salvataggio temporaneo via Ajax ogni tot secondi o ogni volta che un campo viene modificato, in giro ho visto fare così spesso.
Il tuo procedimento mi interessa moltissimo e ti sarei grato se mi potessi spiegare come realizzarlo. Il fatto di poter sapere se l’ utente ha o meno ancora il form da convalidare e poterlo far ripartire dal punto preciso dove si trovava mi piace tantissimo. Questo perché nella mia app i form da compilare vanno in base al prodotto che l’ utente sceglie di utilizzare. Mi interessa il tuo procedimento perché vorrei far si che se l’ utente non ha compilato e convalidato il form, del prodotto che sta utilizzando, NON possa iniziare a usare un altro prodotto, quindi a compilare un altro form, finché non ha convalidato il form che stava utilizzando. Non so se mi spiego. Quindi se hai tempo e mi potessi spiegare come fare quei controlli che fai tu e come realizzare la mia action te ne sarei veramente grato. Grazie
Tieni conto che da quanto ho capito però non ti risolve il problema delle sessioni rotte/chiusure non volute del browser. Puoi però provare a sfruttare la parte client, perché mi sembra fatta non male, e fare un merge con la logica server che ti abbiamo suggerito sia io che Nicola.