2010-02-28 13 views

risposta

7

nel controller, è possibile accedere attraverso ViewHelpers

$this->view->gravatar($email) 

Il modello non dovrebbe chiamare metodi dalla vista, come sarebbe legare il modello al livello di presentazione. La vista potrebbe conoscere il modello, ma il modello non dovrebbe conoscere la vista.

Per Gravatars, c'è anche un servizio e Vista Helper in divenire:

+0

Quindi dove dovrebbe andare questa funzione gravatar? Deve essere disponibile in alcune parti del mio sito web modulare – bluedaniel

+0

@bluedaniel non può dirlo senza conoscere la tua app. Se sei sicuro di averne bisogno nel modello, ad es. come parte della tua logica di dominio, puoi rendere Gravatar un servizio nel tuo modello o aggiungere getGravatar() alla classe che lo chiama. – Gordon

+0

è in troppi modelli da copiare/incollare in ogni classe, ma dove dovrebbe essere un servizio in tutto il sito? – bluedaniel

0

In regolatore:

$this->view->gravatar(); 

Nel modello (Gordon è giusto che non si deve farlo in generale):

Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer')->getView()->gravatar() 

o semplicemente condividere esempio Zend_View via Zend_Registry. Nel caso in cui tu non abbia l'istanza View puoi istanziarla direttamente come $ g = new View_Helper_Gravatar(). Per caricarlo puoi usare Zend_Loader_PluginLoader.

1

Un modo migliore per assicurarsi che la "cosa" dalla vista sia in realtà un helper di vista è utilizzare il metodo getHelper("helperName");.

$this->view->getHelper('gravatar');