Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Comment peut'on charger les aides d'action automatiquement ?
Et pour compliquer encore plus, une aide d'action qui pourrait être dans un module ?
L'idéal serait une déclaration d'une ressource Action Helper dans le bootstrap dans l'application, qui irait, si il le faut, chercher les aides d'action dans [module]/controllers/helpers.
Alors ce que j'ai fait pour l'instant, dans le bootstrap je charge les action helper :
protected function _initActionsHelpers() { Zend_Controller_Action_HelperBroker::addPath( APPLICATION_PATH . '/controllers/helpers', 'Application_Controller_Helper_' ); }
Mais je suis conscient que ça ne va pas chercher dans les modules, juste dans APPLICATION_PATH/controllers/helpers ...
Ensuite un helper de test dans le module Default :
<?php class Default_Controller_Helper_Test extends Zend_Controller_Action_Helper_Abstract { public function preDispatch() { echo "ok"; } }
Et l'appel dans le controleur d'action :
$this->_helper->test();
Si vous avez des idées, n'hésitez pas !
Dernière modification par Kenny (30-05-2012 11:36:25)
Hors ligne
Moi j'aurai plutôt vu un plugin pour le faire. avec inclusion direct à set_include_path() nan ?
Hors ligne
Merci de la réponse, mais c'est pas ça que je recherche ...
Hors ligne
Vraiment personne ?
Bizarre le fait que Zend charge automatiquement les aides de vues, mais pas d'actions ...
Hors ligne
Bon, du coup j'ai fait comme ça :
protected function _initModulesAddons() { // On récupère l'ensemble des modules $this->bootstrap('frontController'); $front = $this->getResource('frontController'); $array_modules = $front->getControllerDirectory(); // On charge les aides de'action pour chq modules foreach($array_modules as $module => $controllerPath) { Zend_Controller_Action_HelperBroker::addPath($controllerPath . '/helpers', ucfirst($module) . '_Controller_Helper_'); } }
Dernière modification par Kenny (16-04-2012 09:34:09)
Hors ligne
Bonjour,
si cela peut aider, je fais cela a travers un plugin :
[lang=php] class Application_Plugin_Logged extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { blablabla . . . blablabla . . . $this->ActionHelpersInit($request); } private function ActionHelpersInit($request) { $ctrlName = $request->getControllerName(); //Je recupere le controller demandé par le client $modName = $request->getModuleName(); //Je recupere le module demandé par le client $actionName = $request->getActionName(); //Je recupere le action demandé par le client $Chemin = APPLICATION_PATH . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR . $modName . DIRECTORY_SEPARATOR . 'controllers'. DIRECTORY_SEPARATOR . ucfirst(strtolower(trim($ctrlName))) . DIRECTORY_SEPARATOR . 'helpers'; Zend_Controller_Action_HelperBroker::addPath($Chemin ); } }
Que j'initialise dans le bootstrap, avec l'avantage de pouvoir le faire à la demande et fonction de certaine conditions !
Hors ligne
Merci pour ta réponse ! (En plus, tu t'es inscrit ici rien que pour ça, merci encore ). J'ai légèrement modifié mon script du coup.
Hors ligne
Pages: 1