Ha senso convalidare i modelli, ma questa convalida dovrebbe essere solo lì per assicurarsi di non salvare alcun dato corrotto.
Validator
è nello Controller
perché è utilizzato per gestire Input e generare Output. Se si esegue la convalida nello Model
, è necessario restituire false e mostrare all'utente i messaggi di errore più casuali relativi ai dati non validi. Si potrebbe anche restituire qualche kine di array contenente tutti gli errori che vengono generati, ma questo è qualcosa che un Modello non dovrebbe fare. Oppure potresti lanciare un'eccezione, operazione che dovrebbe essere eseguita quando un modello tenta di utilizzare dati non validi, ma uccide l'applicazione, che non è la soluzione desiderata per un validatore di moduli.
Quando si esegue la convalida del modulo nel controller, è possibile eseguire tutto ciò che si desidera con i messaggi di errore, senza modificare lo scopo di un modello.
E nel modello è possibile eseguire una convalida per accertarsi di non aver commesso errori, il che danneggerebbe il database. Perché se questo accade, l'applicazione dovrebbe spegnersi.
Quindi, per mettere questo in una risposta reale alla tua domanda: La convalida nel modello ha senso per evitare i dati corrotti, ma se si desidera dare un feedback all'utente di input non valido, dovrebbe essere nel controller.
fonte
2013-07-01 10:19:45
Non direi ufficiale. È solo un modo più semplice di dimostrare che il validatore come l'impostazione di un servizio di validazione decente è un po 'più coinvolto. Esiste un sacco di esempi e pacchetti che eseguono la convalida all'interno del modello stesso o come servizio separato. Guarda in quelli. –
Un vantaggio della convalida del modello è che anche il seeding è convalidato. –
I_would_ say ufficiale perché questo è l'unico modo suggerito dalla documentazione ufficiale. Se questo non è ufficiale, che altro sarebbe? – igorsantos07