In primo luogo, so che ci sono molte risposte su MVC, ma ho bisogno di qualche altro ancora più specifico basato sulla mia probabilmente errata comprensione di MVC.
Ho già letto questa ottima risposta ( Spiega Model View Controller ) ma ho ancora bisogno di chiarimenti.
Devo capire se ho capito come funziona MVC perché lo sto usando in una sorta di framework MVC che sto sviluppando.
- Ho le opinioni che sono al momento solo modelli "stupidi"
- I modelli che sono "cose" che prelevano i dati dal database (o da altre fonti) e li trasformano in array passati alle viste.
- I controller che sono principalmente script e osservatori javascript di ajax per pulsanti e altri eventi utente e script PHP che vengono chiamati dagli script Ajax quando devo eseguire operazioni sul lato server come aggiornamenti SQL, inserimenti ecc.
Quindi la mia "comprensione MVC" fa funzionare la mia app in questo modo:
Apro il mio indice che carica il Viewsloader (modello), questo carica i contenuti chiamando il Contentloader (modello) che chiama qualche altro script a seconda della vista l'utente sta richiedendo.
Quindi, quando tutti i dati vengono caricati in un singolo array, il Viewsloader (modello) lo utilizza per eseguire il rendering della vista richiesta e passarla all'utente.
Ora l'utente può fare clic su un pulsante (ad esempio un pulsante "visualizza contatti") e sotto il cofano il mio contactslistener (controller) chiama il contactloader (modello) a carica l'elenco dei contatti, l'array fornito dal contactloader (modello) viene passato attraverso contactslistener (controller) che lo inietta nella vista.
Penso di avere seri problemi con il modello MVC, sembra che i controllers stiano facendo cose troppo diverse. Probabilmente dovrei mettere gli osservatori / ascoltatori nella parte visualizzazioni e utilizzare controller solo per caricare i contenuti forniti dai modelli .
- I modelli sono dedicati solo al recupero e all'organizzazione dei dati (ad esempio, recuperano dal database e lo inseriscono nell'array organizzandolo con la struttura corretta)?
- I controllori sono pensati per gestire gli eventi utente o dovrei utilizzare le viste per questo scopo? Dovrei usarli per interrogare i modelli e iniettare le risposte nelle viste ?
- Le viste sono solo modelli stupidi o dovrei inserire una logica aziendale come gli ascoltatori di eventi? Seguendo ciò che ho letto dovrei mettere qui gli script dell'interfaccia e mettere solo script lato-client / server nei controller. Ma in questo caso non ho idea di cosa dovrebbe fare un controller ...