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