Domanda

Nel modello Model-View-Presenter dove dovremmo scrivere convalide dell'input dell'utente.

È stato utile?

Soluzione

Le regole / convalide specifiche del dominio devono essere nel Modello. Puoi avere un model.validate () per farti sapere se le regole non vengono violate. Guarda le classi del modello Rails (ActiveRecord) per una buona implementazione di questo concetto.

La vista dovrebbe rendere difficile per l'utente digitare un input non valido. Pertanto, prima di raggiungere il presentatore, è necessario stroncare la classe di errori di input "immissione di una stringa per un valore numerico". Potrebbe esserci una duplicazione delle convalide tra modello e vista. Per esempio. AttributoX deve essere compreso tra 1 e 100. Questo deve essere validato nel modello .. allo stesso tempo potresti voler inserire uno spinner nell'interfaccia utente con l'intervallo minValue e maxValue impostato su 1-100.

Altri suggerimenti

Di solito mantengo la mia visione completamente pulita, nessuna logica lì. Ma non faccio molto sviluppo web. In situazioni Ajax potresti voler avere la convalida lato client che deve andare nella vista.

La validazione della logica di business va nel modello. Con la convalida della logica aziendale intendo cose come il controllo della dimensione minima dell'ordine ecc.

La convalida dell'input va nel presentatore. Questo può essere qualcosa come verificare se un campo numerico non contiene caratteri non numerici. Ma a seconda della situazione, ciò può anche significare verificare l'esistenza di file ecc.

Nei casi più complessi in cui la convalida dovrebbe essere riutilizzabile in luoghi diversi, di solito la separo in un motore di convalida che può essere chiamato in luoghi diversi. Ciò risolve alcuni problemi con la duplicazione del codice di convalida utilizzato nel livello di presentazione, ad esempio nel livello di persistenza.

Presenter ....

La vista dovrebbe avere " widget " che impediscono, ove possibile, input non validi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top