2010-03-08 18 views

Respuesta

40

puede acceder a cualquier ViewHelper desde el controlador por

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

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

Sin embargo, puede que tengas razón que usted está haciendo mal (imagen divertida por cierto), pero en realidad no puedo Diga de su pregunta. Refínalo para saber por qué necesita llamar al asistente de visualización y a lo que se supone que debe formatear.

+0

Sí, ¿cómo podría haberlo olvidado? Me siento estúpido, pero gracias. Para la pregunta "¿es correcto hacerlo?": El asistente de visualización está ahí para formatear fechas, números ... ¿Cómo podría hacerlo de manera diferente? (No puedo hacer eso con Javascript) –

+0

@ Matthieu Ah, ya veo. Yo diría que ViewHelper suena bien en este caso, entonces. – Gordon

+0

intenté usar la tercera opción pero recibí Llamada al método indefinido Zend_Controller_Action_Helper_ViewRenderer :: getView(), estoy en una clase personalizada que está siendo llamada por el controlador – max4ever

0

Solo use ayudantes de acción, muchos de los ayudantes de visualización están disponibles como ayudantes de acción también.

O directamente usando Zend_Date o sprintf.

+0

Dije: "Necesito usar un * personnal * view helper" –

+0

Sí, pero me importa la arquitectura de Zend Framework y no me tomé meses para entenderlo y crear view helper para eliminarlo al anular el concepto de "ayudante" y llame directamente a las clases, o incluso peor: sprintf para formatear mis números y fechas. –

+0

También dijiste: 'No uso una vista'. ¿Quiso decir que no usa las secuencias de comandos 'Zend_View', o' .phtml' view? $ this-> view -> _ helper; es obvio ... ¿Quién sabe qué 'personnal view helper' es :) – takeshin

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

Solo asegúrese de que la vista devuelta sea la que desee. Porque más adelante, la vista puede sobrescribirse y en el controlador tiene una nueva vista.

Y todos esos valores que configuró en la vista en el asistente de acción y similares ... antes de que se inicie el controlador? Todo se fue con el viento!

Así que pruebe antes de asumir que si obtiene un recurso de vista. es realmente el mismo recurso de visualización que esperas, y todos tus vars todavía están allí.

¡Tal vez se sorprenda!

3

Puede crear una instancia de un Ayudante ... esto funcionará en Controladores, Modelos y en todas partes donde necesite el Ayudante.

por ejemplo.

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

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

Esto es cierto, aunque no es la mejor solución –

+0

@Matthieu, ¿tienes una mejor manera de usar ayudantes en Models? – Danilo

+0

¿Realmente usas ver ayudantes en modelos? –

Cuestiones relacionadas