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:
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.