Zend Framework Tutorial - 5

NewsController

Siamo finalmente arrivati all'ultima parte di questa serie di articoli dedicati alla realizzazione di una applicazione con lo Zend Framework. Dobbiamo analizzare il funzionamento del NewsController, il cuore della nostro sito web, che si occupa della visualizzazione, inserimento, modifica e cancellazione delle news. Di seguito viene riportata la struttura del Controller che sarà analizzata in dettaglio nelle prossime pagine.

class NewsController extends Zend_Controller_Action
{
    protected $_flashMessenger = null;

    public function init() {
        // istruzioni...
    }

    public function viewAction() {
        // istruzioni...
    }

    public function deleteAction() {
        // istruzioni...
    }

    public function newAction() {
        // istruzioni...
    }

    public function editAction() {
        // istruzioni...
    }
}

Nel codice sono evidenti le quattro Action per la gestione delle news (viewAction, deleteAction, newAction, editAction). Inoltre si può notare l'attributo $_flashMessenger che ci serve per conservare un riferimento all'helper FlashMessenger, descritto nel precedente articolo. Poiché il FlashMessenger viene utilizzato in quasi tutte le Action, è conveniente recuperarlo e conservarlo in un attributo (una variabile) del Controller. Dove vanno poste le istruzioni per recuperare il FlashMessenger indipendentemente dalla Action chiamata? Nel metodo init(), di seguito riportato:

public function init()
{
    $this->_flashMessenger = $this->_helper->getHelper('FlashMessenger');

    if($this->_hasParam('annulla')) {
        $this->_redirect('/');
    }
}

Il metodo init() è una particolare funzione che è possibile inserire in un Controller. Se presente, viene eseguito prima di qualsiasi Action richiesta dall'utente, quindi risulta utile quando vogliamo lanciare delle istruzioni comuni a tutte le Action, senza doverle ripetere in ciascuna di esse. Nel nostro caso il metodo init() è stato utilizzato proprio per conservare un riferimento al FlashMessenger nell'attributo $this->_flashMessenger.

Inoltre due Action del Controller (quelle che gestiscono l'inserimento e la modifica di una news) prevedono che l'operazione possa essere annullata attraverso la pressione di un tasto "annulla", presente nel form. Anche la gestione di questo comportamento comune quindi può essere "centralizzata" nel metodo init() in modo da non doverla ripetere (ricopiare) nelle due Action.

Per sapere se è presente un parametro tra i dati inviati con il form utilizziamo l'istruzione $this->_hasParam('nome_parametro'). Nel nostro caso il pulsante di annullamento è un classico bottone di submit e ha per nome 'annulla'. Per effettuare il redirect utilizziamo invece $this->_redirect('/URL/di/destinazione'). Corrisponde al classico header('location: /URL/di/destinazione');

Pagine: 12 3 4 5 6

1 commento

1 Grisou Grisou luned́ 23 novembre 2009, ore 21:43
Ciao, grazie anche a questi tutorial, dai quali ho preso alcuni spunti ho convertito il mio vecchio sito (Grisou.org) precedentemente realizzato con Joomla! ad un'applicazione custom realizzata con Zend_Framework. Spero presto di poter portare questa esperienza nella società per cui lavoro (Excite - www.excite.it / GoAdv - www.goadv.net),
Effettua l'accesso o registrati per inserire un commento