Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
je cherche à suivre les indications du zend : http://framework.zend.com/manual/en/per … .view.html
Je voudrais faire une classe qui hérite de zend view, et l'utiliser en lieu et place d'un classique zend view.
class App_View_View extends Zend_View { public function message($string) { return "<h1>" . $this->escape($message) . "</h1>\n"; } }
Pour cela je fais dans mon bootstrap :
protected function _initView(){ $view = new App_View_View(); $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer(); $viewRenderer->setView($view); }
Mais en faisant : $this->message cela ne fonctionne pas :s
J'ai fais un DEBUG de la vue, et il apparais que l'objet est un Zend_View au lieu de App_View_View.
Pouvez vous m'apporter vos lumières svp.
Je ne cherche pas à faire qu'un view helper, ici c'est juste un exemple.
Dernière modification par DarKA (24-09-2009 22:32:29)
Hors ligne
Bonjour DarKA,
Il faut savoir ou tu fait $this->message() car si c'est dans la même fonction ce serait plus $view->message().
Ensuite si c'est dans une vue, C'est différent. Si tu fait référence à une aide de vue, il faut que ce soit de cette forme :
pour $this->message(), la classe doit être quelque chose comme ça :
class Zend_View_Helper_Message extends ... { public function message() { .... code .... } }
Voila, j'espère avoir pu d'aider.
Bonne continuation.
Hors ligne
j'ai fais un article sur le sujet
http://sekaijin.ovh.org/?p=13
attention il s'agissait de ZF1.0.4
mais ça reste valable dans le principe
Hors ligne
Le problème de ton code, c'est que tu réinstancie l'aciton helper viewRenderer et tu ne l'enregistre pas à la place de l'autre qui est créé automatiquement.
Donc utilise plutôt ça
Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer')->setView(new App_View_View()); //ou peut etre ca mais je suis pas sur du tout que setView existe (getView si par contre) Zend_Layout::getMvcInstance()->setView(new App_View_View());
Hors ligne
Oké ca marche merci.
Hors ligne