2009-06-25 8 views
8

Sto testando CodeIgniter e sto provando a creare un blog semplice. Il video tutorial su CodeIgniter site è bello, ma molto incompleto. Non ho molta familiarità con la struttura MVC e mi chiedo esattamente come viene utilizzato un modello. Per esempio, sto attualmente facendo la parte "admin" del mio blog, che ti permette di creare, eliminare e modificare le voci. La vista contiene solo xhtml e il controller si occupa del resto. Cosa dovrebbe essere nel modello? Tutto il database correlato si verifica nel modello (ad esempio, inserisce, aggiorna, seleziona, ecc.)?Blog in CodeIgniter: dove inizia il modello e il controller termina?

+4

Perché qualcuno ha votato? Se non hai mai lavorato prima su MVC, è una domanda molto valida (e comune). – nilamo

+0

Forse perché la domanda è troppo specifica (su codeigniter) e non molto su MVC in generale. – MarmouCorp

+2

Che io possa capire, ma se non conosci molto su MVC, potresti non sapere che è indipendente dalla lingua e dal framework e quindi fornirebbe tutti i dettagli su come si applica alla tua situazione il più possibile. – nilamo

risposta

9

Dipende da chi chiedi.

Alcune persone amano mettere il più possibile nel modello (convalida, recupero dei dati, ecc.) E fare in modo che il controller lo colpisca per ottenere i dati di cui ha bisogno, che poi passa alla vista.

Pensate in questo modo: se avete più di un controller che accede a un singolo modello, non dovrebbero esserci cose comuni tra di loro essere in un posto comune (purché quella cosa comune abbia in realtà qualcosa a che fare con il modello)?

+4

Questa è una buona risposta, ma mi piacerebbe segnalare un buon articolo sui modelli qui, come alcune letture aggiuntive: http://blog.astrumfutura.com/archives/373-The-M-in-MVC-Why- I modelli sono incompresi e non apprezzati.html –

+0

@Jani: articolo fantastico, grazie per il link. – nilamo

+0

Il controller è responsabile solo dell'adozione dei parametri http e di trasformarli in qualcosa che il modello può digerire. Il controller è l'agente di accoppiamento tra il client e il server. In questo modo, è possibile riutilizzare il codice modello quando si decide di eseguire il server su altri client utilizzando xml, json o qualsiasi altro trasporto. –

-1

model = è oggetto che "comunica con il database" view = is object that building user interface controller = è il comandante .. ha ricevuto il comando dall'utente e quindi lo ha passato sul modello e servito all'utente attraverso la vista.

per creare un semplice blog, provare a leggere Codeigniter per iniziare. ti aiuterà molto dopo aver visto il video. i riferimenti al codeigner sono ben documentati e ben spiegati. provalo prima

+0

Il modello non è un'implementazione del modello di record attivo. È dove dovrebbe andare l'elaborazione dei dati. Dovrebbe anche darti un modo per connetterti al db, sì, ma il suo unico scopo non è l'accesso db. – AntonioCS

+0

parlando con database non sempre in record attivo. Creo manualmente il mio modello per imitare i record attivi (anche se è così semplice e non flessibile). Ma il modello in MVC dovrebbe parlare con DB althoug in CI non è necessario (puoi semplicemente usare view e controller per fare quello che vuoi) – nightingale2k1

+0

Beh, ho trovato che i video introduttivi del codeigniter vanno bene per mostrare cosa può fare il framework, no così tanto da iniziare un progetto di blog. Nel video non si preoccupano della sicurezza e di altre cose importanti, e non mostrano come usare un modello (ecco perché sto qui ponendo la domanda ^^;) – Manu

2

Il modello deve contenere tutto il database correlato ed eseguire tutte le operazioni di base CRUD (Crea, Ottieni, Aggiorna, Elimina).

Il controller deve gestire tutte le comunicazioni tra il modello e la vista. Ad esempio, se hai un modulo per aggiungere un nuovo post, dovresti avere una vista per quel modulo, che viene chiamato da un controller. Il controllore controllerebbe se è stato inviato qualcosa e, in caso di problemi, chiama il metodo di creazione/inserimento dal modello di post.

2

Per me, il modello è un punto in cui faccio tutto il lavoro "sporco" per i miei dati. Prendo, inserisco, aggiorno i dati nel database, tutto in un modello. Creo 1 modello per 1 tabella nel db.

Il controller sarà centrale logico per una pagina che creo. Ha bisogno di essere il più sottile possibile. Se una funzione va al di là di 1 schermata, allora è troppo lunga (eccetto se fa una validazione che deve essere fatta nel controller). È qui che il modello entra in gioco. Il controller passa semplicemente i dati nel modello. Controllo, elaborazione e formattazione dei dati nel modello. Il mio controller preleva i dati elaborati dal modello, lo passa alla vista, finisce.

+0

Aggiunta, il modello non è sempre necessario svolgere attività correlate al database. Io uso anche il modello per recuperare i dati personalizzati dai cookie. Per me, questo è un dato e il modello dovrebbe elaborarlo prima che io lo usi in controller/view. –

+0

Questa è anche la mia scelta. Il mio modello fa funzioni di database e questo è tutto. Le librerie eseguono funzionalità comuni che non sono correlate ai database e i controller raccolgono solo dati e li consegnano alla vista. –

Problemi correlati