Strutturare un database di tipo questionario - gestione della validazione

Ho dei problemi nel disegnare il mio database e spero in un vostro consiglio.

Devo realizzare un progetto di tipo questionario con ZF+Doctrine.

La strutturazione del questionario e' da realizzare tutta dinamicamente. Quindi l'amministratore dovra' creare una checklist composta da diversi item dove gli item sono le domande.

Ogni item puo' essere un semplice input text oppure una select alla quale devono essere attaccate delle possibili opzioni.

Fino a qui tutto bene.

Il mio problema sta nel fatto che anche la validazione di questi item e' da implementare dinamicamente ed ho pensato di fare questo grazie all'aiuto del database.
Esempio: la risposta all'item x puo' essere obbligatorio o meno allora ho pensato di aggiungere un campo flag al record in modo che alla costruzione dell'elemento nel form dinamico aggiungio l'attributo 'required' o meno.
Ma prendiamo il caso che io volessi implementare una validazione dinamica del tipo: se il valore dato l'item x==3 allora l'item y==5. Come posso strutturare tutto questo?
Oppure altro caso di validazione: il valore dato all'item x deve essere la somma dei valori assegnati a y e z altrimenti messaggio di errore.

Sapreste darmi una dritta per gestire tutto questo sia grazie al database che a devi validatori custom Zend_Validate?

Grazie

inviato 4 anni fa
JellyBelly
X 0 X

Inizia con il definire quanti tipi di "casi limite" possono presentarsi nell'uso della tua applicazione, stiamo parlando di meno di una decina oppure serve un numero alto o indeterminato di varianti? Considera l'uso di Decorator e Specification per aggiungere comportamento a runtime ai tuoi oggetti.

risposto 4 anni fa
Andrea Turso
Andrea Turso
86
Scusa la mia tardiva risposta, ma la mail di notifica era finita nello spam! :S Veniamo a noi, sicuramente il mio caso e' quello di un numero indeterminato di varianti! A me non interessano i Decoretor a me interessa un modo come Validare questi elementi!! :SJellyBelly 4 anni fa
Scusami per la risposta troppo generica @JellyBelly. Il Decorator ti serve per aggiungere funzionalità/responsabilità ai tuoi oggetti a runtime, piuttosto che dover creare tante classi quanti sono i possibili casi limite. Da' un'occhiata alle motivazioni e alle caratteristiche del pattern Decorator per capire se si applica più o meno bene alla soluzione tuo problema (http://www.giorgiosironi.com/2010/01/practical-php-patterns-decorator.html).Andrea Turso 4 anni fa
Purtroppo non credo ci siano modi più semplici di risolvere il tuo problema se non riducendo la complessità del problema stesso. Non pensi sia possibile cercare un approccio più pragmatico? E.g. usare dei validator con la regola di validazione passata in un callback (vedi Zend Validate Callback). Altrimenti sarà necessario provare qualcosa di più complesso basato su Specification e Interpreter. Rimane comunque il problema della persistenza e della personalizzazione delle regole di validazione.Andrea Turso 4 anni fa
Quello che mi dici e' tutto molto interessante, ma da astrarre per bene non credo sia una cosa facile. Facciamo un esempio di gestione di un singolo caso? Prendiamo in considerazione che abbiamo due item X e Y. X ha una regola di convalida del tipo: se Y==0 allora X==0. Come salvo nel database questa informazione? Una volta salvata questa info, quando genero il form dinamicamente rilevo che X ha una regola di convalida allora gli attacco un Validator di tipo Callback e gli dovrei passare le info di validazione salvate nel DB. Giusto? Ci siamo come astrazione?JellyBelly 4 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda