Zend Framework Tutorial - 4

IndexController

Dopo aver analizzato la classe Model che gestisce tutta l'interazione con il database, possiamo finalmente iniziare a vedere i Controller della nostra applicazione ed i template HTML associati. Abbiamo detto che i Controller sono classi costituite da Action, metodi che vengono automaticamente richiamati dal Front Controller per svolgere una particolare funzionalità del sito, associata ad un URL richiesto dall'utente. Cosa ci aspettiamo di trovare quindi in una Action?

Generalmente una Action preleva eventuali dati presenti nella richiesta effettuata dall'utente (come i dati GET e POST), richiama uno o più Model per interagire col database e mostra il risultato del suo operato caricando (implicitamente o esplicitamente) un template a cui passa i dati dinamici da visualizzare. Vediamo come queste operazioni vengono eseguite nell'IndexController, responsabile della home page del sito. Di seguito viene riportato il codice completo.

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $this->view->titoloPagina = 'Ultime news';

        $fm = $this->_helper->getHelper('FlashMessenger');
        $this->view->messaggi = $fm->getMessages();

        $news = new News();

        $this->view->news = $news->getAllNews();
    }
}

Analizziamo il codice riga per riga:

  • riga 5: la stringa 'Ultime news' viene assegnata alla variabile titoloPagina dell'oggetto View. Questo oggetto, che ricordiamo si occupa della visualizzazione dei template HTML, viene automaticamente creato dallo Zend Framework ed è accessibile dal Controller attraverso la sua variabile $this->view. In questo modo il passaggio dei dati dal Controller alla View è semplicissimo, basta infatti assegnare i dati ad una variabile dell'oggetto $this->view, ad esempio $this->view->nomeVariabile = $valore. Il template HTML che verrà poi richiamato da View vedrà tutte le variabili della View come proprie, quindi per recuperare tale valore accederà a $this->nomeVariabile.
  • riga 7: viene creato un oggetto FlashMessenger, un componente di supporto (Helper) del Controller nel quale è possibile conservare uno o più messaggi da mostrare all'utente nelle successive pagine del sito. Questi messaggi vengono salvati automaticamente in sessione quindi il FlashMessenger può essere utilizzato da una Action che sta per effettuare il redirect ad un'altra pagina e vuole che questa mostri un messaggio. Nella nostra applicazione questi messaggi vengono generati durante la gestione delle news (inserimento, modifica, cancellazione) e vengono visualizzati nella home page.
  • riga 8: l'array dei messaggi conservati da precedenti Action nel FlashMessenger viene assegnato alla variabile $this->view->messaggi in modo che il template possa visualizzarli.
  • riga 10: viene istanziato il Model delle News.
  • riga 12: assegnamo alla variabile $this->view->news tutte le news che ci restituisce il Model in modo che il template possa visualizzarle.

Come avrete notato, in indexAction non si fa riferimento a nessun template da mostrare. Questo perché lo Zend Framework di default, dopo aver richiamato una Action, carica automaticamente il template associato attraverso l'oggetto View. In questo caso, poiché la Action si chiama indexAction ed appartiene al controller IndexController allora verrà richiamato il template view/scripts/index/index.phtml.

Pagine: 12 3
Effettua l'accesso o registrati per inserire un commento