2010-03-08 14 views

risposta

40

È possibile accedere a qualsiasi ViewHelper dal controller da

$this->view->helpername(/*params*/); 
// or 
$helper = $this->view->getHelper('helpername'); 
// or 
$broker = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); 
$broker->getView()->helpername(/*params*/); 

Vedi Zend: How to use a custom function from a view helper in the controller?

Tuttavia, si potrebbe essere giusto che si sta facendo male (funny pic btw), ma non posso davvero dillo dalla tua domanda Si prega di perfezionare il motivo per cui è necessario chiamare l'helper della vista e cosa deve essere formattato.

+0

Sì, come potrei dimenticarlo! Mi sento stupido, ma grazie. Per la domanda "è giusto farlo": l'helper della vista è lì per formattare date, numeri ... Come potrei fare diversamente? (Non posso farlo con Javascript) –

+0

@Matthieu Ah, capisco. Direi che ViewHelper suona bene in questo caso. – Gordon

+0

ho provato a utilizzare la terza opzione ma ottengo Chiama a metodo non definito Zend_Controller_Action_Helper_ViewRenderer :: getView(), sono in una classe personalizzata chiamata dal controller – max4ever

0

Basta usare gli helper di azione, molti degli helper di visualizzazione sono disponibili anche come helper di azioni.

Oppure direttamente utilizzando Zend_Date o sprintf.

+0

Ho detto "Ho bisogno di usare un assistente di visualizzazione * personnal * –

+0

Sì, ma mi interessa l'architettura di Zend Framework e non ho trascorso mesi a capirlo e creare l'aiuto della vista per strapparlo via ignorando il concetto di" helper "e chiama direttamente le classi, o anche peggio: sprintf per formattare i miei numeri e le mie date. –

+0

Hai anche detto "Non utilizzo una vista". Intendevi che non usi gli script di visualizzazione 'Zend_View' o' .phtml'? $ This-> Visualizza -> _ aiutante; è ovvio ... Chissà che "assistente vista personale" è :) – takeshin

1

Un altro approccio consiste nell'utilizzare ContextSwitch or AjaxContext action-helpers. Questo ti permette di usare uno script di visualizzazione dal quale puoi quindi chiamare il tuo view-helper nel modo standard.

4
Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view'); 

Accertarsi che la vista restituita sia la vista desiderata. Perché lungo la linea, la vista potrebbe essere sovrascritta e sul controller si ha una nuova vista di spank.

E tutti quei valori impostati sulla vista sull'aiuto di azione e simili ... prima che il controller venga calciato? Tutto andato con il vento!

Quindi test prima di assumere che se si ottiene una risorsa vista. è davvero la stessa risorsa di visualizzazione che ti aspetti e che tutti i tuoi vars sono ancora lì.

Potresti essere sorpreso come lo ero io!

3

È possibile creare un'istanza di un helper. Funzionerà in controller, modelli e ovunque sia necessario l'helper.

es.

// create Instance 
$serverUrl_helper = new Zend_View_Helper_ServerUrl(); 

// get the ServerUrl 
$serverUrl = $serverUrl_helper->serverUrl(); 
+1

Questo è vero, sebbene non sia la soluzione migliore –

+0

@Matthieu, hai un modo migliore di usare gli helper in Modelli? – Danilo

+0

Usi veramente gli helper delle viste in Models ?? –

Problemi correlati