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