Magazine Informatica

Zend Framework – Disabilitare il layout e la view

Creato il 22 luglio 2010 da Blogrammazione

Lavorando con Zend Framework in diverse occasioni avremo la necessità di disabilitare il layout e la renderizzazione della vista. Per effettuare l’upload di file ad esempio potrei aver bisogno di una action da richiamare in un determinato controller, senza però per forza applicare a questa una vista.
L’implementazione del pattern MVC (Model-View-Controller) di Zend Framework, in accordo con le regole di naming implementate dal framework, richiedono uno schema di questo tipo:

==> richiesta al controller (www.dominio.com/news/list)

==> attivazione della action corrispondente (chiamata al metodo listAction() del controller “news”)

==> gestione dei dati nel model (vengono recuperati dal databse i dati richiesti e passati al controller)

==> ritorno del responso al controller (il controller recupera i dati restituiti dal model e li assegna alla vista)

==> visualizzazione dei dati nella vista corrispondente (la vista visualizza i dati risultati dalla richiesta ricevuta al primo passaggio )

Per quanto riguarda il naming, invece, il framework richiede che ci sia una corrispondenza tra la richiesta (URL) e gli elementi MVC :

- URL = www.dominio.com/news/list

- nome del controller (NewsController)

- nome della action (listAction)

- file della vista che contiene il codice HTML per la visualizzazione del responso (list.phtml)

I colori ci aiutano a chiarire le corrispondente. Ci sono dei casi però in cui tutto il meccanismo che implementa l’MVC non è necessario. In alcuni casi, infatti, il file della vista (nel nostro caso list.phtml) non è necessario.

Pensiamo ad esempio all’azione di caricamento (upload) di un file: in questo caso ci interessa richiedere al controller che si occupa della gestione dei file di attivare la action adibita alla gestione del caricamento, ma senza richiamare un file di visualizzazione, restituendo invece un semplice messaggio per fornire il feedback sul successo o meno dell’operazione.

Per ottenere la disabilitazione del layout e il richiamo automatico della vista possiamo servici dell’helper messo a disposizione da Zend Framework stesso:

$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);

Inserendo queste righe di codice all’interno della action del controller comunichiamo al framework di disabilitare il layout e dunque la visualizzazione del risultato nel corrispondente file .phtml . In questo modo Zend Framework non andrà a cercare il file della vista, e noi siamo liberi di utilizzare il risultato della richiesta nel modo più adeguato alle necessità del nostro applicativo.


Ritornare alla prima pagina di Logo Paperblog