Il concetto allentato di una strategia in Zend Framework 2 è il comportamento che l'applicazione deve seguire quando gli eventi vengono attivati durante il ciclo dell'applicazione MVC, ovvero in effetti gestito dall'evento.
In termini più pratici, una strategia è fondamentalmente un listener di eventi, di solito un esempio concreto di \Zend\EventManager\AbstractListenerAggregate
, e di solito ascolta \Zend\Mvc\MvcEvent
vari eventi come EVENT_RENDER
e EVENT_RENDER_ERROR
.
L'ascoltatore è attaccato al \Zend\EventManager\EventManager
e poi, usando il sopracitato \Zend\Mvc\MvcEvent
per accedere a tutte le risorse fondamentali del ciclo MVC (router, richiesta, la risposta, l'applicazione stessa, ecc), l'ascoltatore può controllare lo stato del applicazione e alterarne il flusso.
Nell'esempio fornito da documentazione ufficiale ZF2, l'ascoltatore ispeziona accettare intestazioni del richiesta, seleziona un renderer e altera la risposta di conseguenza.
E 'un po' vecchio, però, così io suggerirei di guardare alcuni esempi migliori di lettura del codice delle strategie graffetta fornite dal framework, cioè \Zend\Mvc\View\Http\RouteNotFoundStrategy
che ascolta EVENT_DISPATCH
e EVENT_DISPATCH_ERROR
per gestire il rendering di pagine di errore 404 .
Inoltre è di vitale importanza che si capisce come l'intera EventManager
opere. I documenti ufficiali per questo sono abbastanza buoni, inoltre c'è un sacco di cose su di esso se si google in giro.
fonte
2013-07-25 16:11:07
Un po 'da parte l'ambito della tua domanda, ma quello che ti serve è stato convertito in un 'ControllerPlugin' che è chiamato [' acceptableViewModelSelector() '] (http://zf2.readthedocs.org/en/latest/ moduli/zend.mvc.plugins.html # Zend-MVC-Controller-plugins-acceptableviewmodelselector). Questo dovrebbe coprire quello che ti serve;) – Sam
Hey Sam! Grazie per il suggerimento! In realtà l'ho implementato con ['AcceptableViewModelSelector'] (http://framework.zend.com/manual/2.1/en/modules/zend.mvc.plugins.html#zend-mvc-controller-plugins-acceptableviewmodelselector) . Ma ora ho due problemi: 1. Se "Accept" contiene diversi tipi, la richiesta viene automaticamente inoltrata a "PhpRenderer". 2. Non riesco a impostare 'script_paths' per JSON/XML (per prepairare i dati per l'output, s [qui] (http://stackoverflow.com/questions/17275230/how-to-handle-multidimensional-output -con-nested-liste-con-la-table-Gatewa)). – automatix
non troppo familiare, mi dispiace. Più intestazioni accettano non è la mia regione: D – Sam