Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
J'ai créé des view_helper personnalisés qui sont rangés dans un dossier "application/views/helpers".
J'arrive a les retrouver en appelant " $this->view->setHelperPath('./application/views/helpers', 'My_View_Helper_');"
dans chaque controller.
Y a-t-il un moyen de definir a un seul endroit le HelperPath pour toutes les vues?
Merci
Dernière modification par Stouty12 (04-09-2007 16:27:15)
Hors ligne
Oui comme toujours il suffit d'utiliser la dérivation
tu crées une classe Action qui dérive de Zend_Controller_Action
dans la methode init tu mets tous ce qui est commun à tes contrôleurs
et tu fait dériver tes contrôleurs de ta classe Action
AJYT
Hors ligne
sekaijin,
Merci pour ta réponse, j'avais effectivement pensé a quelque chose de semblable. Mais j'aimerais ne pas avoir a étendre une classe de base du framework pour quelquechose d'aussi trivial.
Toutes les vues "connaissent" par defaut le chemin des helpers de zend (Zend/view/helper), j'aurais aime un mecanisme qui me permettent simplement d'ajouter le path de mes helpers a toutes les vues aussi facilement.
Peut être n'est ce tout simplement pas possible du fait que dans la classe "Zend_View_Abstract" , $_Path n'as pas été déclarée static ?
Hors ligne
dans Zend_View_Abstract, tu as une fonction addHelperPath :
/** * Adds to the stack of helper paths in LIFO order. * * @param string|array The directory (-ies) to add. * @param string $classPrefix Class prefix to use with classes in this * directory; defaults to Zend_View_Helper * @return Zend_View_Abstract */ public function addHelperPath($path, $classPrefix = 'Zend_View_Helper_')
Je n'ai pas regardé dans le détail, mais ça pourrait résoudre ton problème.
A+, Philippe
Hors ligne
Merci Philippe,
La fonction addHelperPath() ajoute un path uniquement a l'instance de la vue en question, mais les autres vues ne sont pas concernées. (J'ai testé pour être sur ).
Il me faudrait un truc du genre static addHelperPath().
A+
Stout
Hors ligne
il n'y en a pas....
perso moi je dérive le controler action, et je le défini la dedans, ensuite mes controller étende tous cette class
Hors ligne
Grummfy a écrit:
il n'y en a pas....
C'est bien ce que je pensais...
Merci à tous pour vos réponses rapides
Stout
Hors ligne
Alors dans ce cas là il te faut en passer par le démarrage du framework
dans ton index.php
tu dois avoir quelque chose comme
$controller = self::getInstance($engine); $controller->throwExceptions(true); $controller->setControllerDirectory($controllerDirectory); $controller->dispatch();
à ce moment là il te fau instancier ton objet view et récupérer le ViewRenderer. là tu ajoutes tes options à ta vue et tu affecte ta vue au view renderer
$view = new Zend_View(); $viewRenderer= Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $viewRenderer->setView($view)->setViewSuffix('ext');
tu peux aussi dériver la classe view pour en avoir une qui corespond à tes besoin et l'instancier et l'affecté à la place de Zend_View c'est ce que je fais pour les moteurs de template.
pour ce qui est de la classe Action personnellement j'en mets toujours une. ainsi la moindre évolution commune à tous mes contrôleurs est facile à réaliser.
il arrive souvent que cette classe ne fasse absolument rien elle est complètement inutile. mais lorsque l'application est en production et qu'on me demande une évolution cela me facilite le travail. je préfère donc la mettre au cas où. cela implique pour l'application le chargement d'un fichier de plus lors du premier démarrage
A+JYT
Hors ligne
sekaijin a écrit:
Code:
$viewRenderer->setView($view)->setViewSuffix('ext');
Merci, j'ai ajouté ca dans index.php
$view = new Zend_View(); $view->addHelperPath('./application/views/helpers', 'My_View_Helper_'); $viewRenderer= Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $viewRenderer->setView($view);
et ca fait exactemetn ce que je voulais. Mais si je rajoute "setViewSuffix('ext');" ca ne marche plus.
A quoi sert de rajouter ce suffixe ?
edit : concernant "setViewSuffix('ext')", j'ai compris que j'en avais pas besoin utlisant l'extension par defaut "phtml".
Stout
Dernière modification par Stouty12 (04-09-2007 16:25:03)
Hors ligne
le suffix était là comme exemple de propriété que tu peux modifier à ce moment là
comme pour les addStriptPath et autres helpers
A+JYT
Hors ligne
Pages: 1