Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
A propos des helpers personnalisés:
si je configure plusieurs chemin d'Helpers en faisant de la sorte
$view->addHelperPath('../application/views/helpers'); $view->addHelperPath('../application/views/helpers/meshelpers','Mes_Helpers');
- si j'ai 2 helpers nommé par exemple Toto.php avec un contenu différent :
le nom classe de l'un sera Zend_View_Helper_Toto {
et l'autre sera Mes_Helpers_Toto {
Ensuite dans la vue où j'aimerais les appeler je fais
$this->toto();
Mais comment puis je faire pour appeler l'un ou l'autre ??
Merci beaucoup
Dernière modification par nkos (19-11-2008 17:30:15)
Hors ligne
Hello,
En faisant :
$tata = $this->toto();
Tu prendras le dernier ajouté donc Mes_Helpers_Toto.
Si tu veux forcer Zend_View_Helper_Toto, tu dois faire :
$tata = new Zend_View_Helper_Toto();
A+
Hors ligne
merci pour la réponse
mais le problème est qu'il ne trouve pas la classe Zend_View_Helper_Toto() !
Je comprends pas pourquoi car le chemin est bien référencé dans le bootstrap et que les noms des classes sont bien nommées !!
Hors ligne
Hello,
Elle est où Zend_View_Helper_Toto ?
A+
Hors ligne
Dans le dossier application/views/helpers de mon application
$view->addHelperPath('../application/views/helpers');
merci
Dernière modification par nkos (19-11-2008 18:59:29)
Hors ligne
Hello,
Je m'en doutais un peu . Le préfixe Zend_View_Helper est celui du ZF, tu ne peux pas l'utiliser hors du dossier Zend/View/Helper. Tu dois créer un préfixe pour ton dossier '../application/views/helpers'.
Par exemple :
$view->addHelperPath('../application/views/helpers', 'Helpers'); $view->addHelperPath('../application/views/helpers/meshelpers','Mes_Helpers'); // tu appelles ensuite $tata = $this->toto(); // ou $tata = new Helpers_Toto();
A+
Hors ligne
En mettant
$tata = new Helpers_Toto();
il va chercher la classe au chemin Helpers puis Toto et n'arrive pas à le trouver, j'ai ces messages d'erreurs
Warning: Zend_Loader::include_once(Helpers\Toto.php) [zend-loader.include-once]: failed to open stream: No such file or directory .... Fatal error: Class 'Helpers_Toolbar' not found ...
En initialisant mes chemins d'Helper comme ça
// Path vers les Helpers $view = new Zend_View(); $view->addHelperPath('../application/views/helpers', 'Helpers'); $view->addHelperPath('../application/views/helpers/meshelpers','Mes_Helpers'); $view->doctype('XHTML1_TRANSITIONAL'); Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setView($view);
Je "dois" renommer mes classes toto(), si j'ai bien compris, de la sorte :
class Helpers_Toto { public function toto() { return $moncode; } } et class Mes_Helpers_Toto { public function toto() { return $moncode; } }
En appelant mon helper par $this->toto(); dans ma vue, il m'appellera tjrs la classe Mes_Helpers_Toto (je ne sais pas pourquoi tjrs celui-ci en premier parceque même en inversant l'ordre d'initialisation des chemins de mes helpers, il continuera d'appeler celui ci...)
Cela signifierait qu'il n'est pas possible d'avoir deux helpers du même nom ? :'(
Il servent à quoi alors les préfixes ?
Merci encore de votre aide !
Dernière modification par nkos (20-11-2008 10:13:00)
Hors ligne
C'est un problème pour tous les langages, tu ne peux pas avoir 2 fonctions avec le même nom
$this->faituntruc();
$this->fatiuntruc();
Comment savoir laquel fait quoi ??
Si tu as deux fonctions de même nom, alors, c'est que tu dois trouvé une autre logique pour nommer tes fonctions.
Hors ligne