2010-06-23 6 views
0

Bonjour les gars, voici ma première question sur Stack Overflow. Je me suis dit que ce site m'a beaucoup aidé et que je l'ai aussi essayé.Zend Framework: Chargement de modules à partir d'un autre répertoire

Je travaille actuellement sur plusieurs applications Zend Framework qui doivent hériter des modules d'un répertoire de module commun. La structure de fichier utilisé est la méthode classique (en omettant les noms réels et les références pour protéger la structure d'application):

/application1 
    /application 
     /modules 
      /module1 
      /module2 
      /module3 
      /... 

/application2 
    /application 

Pour l'instant j'ai essayé autoloading manuellement chaque seul module dans le bootstrap de Application2 comme ceci:

$moduleLoader = new Zend_Application_Module_Autoloader(
    array('namespace' => 'Prefix', 'basePath' => path_to_application1_application_modules_modulename) 
); 
$autoloader->pushAutoloader($moduleLoader); 

Cela fonctionne, mais comme vous pouvez l'imaginer, cela devient un travail fastidieux. Maintenant, je l'ai également essayé de placer le répertoire du module commun dans le FrontController comme ceci:

$frontController = Zend_Controller_Front::getInstance(); 
$frontController->addModuleDirectory(path_to_application1_application_modules); 

Mais cela ne semble pas Bootstrap l'un des modules. Est-ce que j'oublie quelque chose d'important? Votre aide est tres apprecie!

Répondre

0

Vous pouvez utiliser la configuration resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" dans votre chemin config.ini, puis utilisez simplement l'autochargeur.

Cela fonctionne pour moi, je viens d'utiliser des modules d'une autre application en changeant le chemin pour resources.frontController.moduleDirectory dans config.ini.

Pour l'essayer sur votre configuration, dans application2 config.ini vous devez mettre resources.frontController.moduleDirectory = APPLICATION_PATH "/../application1/application/modules"

LE: Si vous voulez vous ajouter des modules dans bootstrap de config.iniresources.modules[] = "" après la ligne avec moduleDirectory. J'ai essayé moi-même et sans cela, les autres modules ne sont pas amorcés lors de la saisie d'un module aléatoire.

+0

En tout cas je l'essaie toujours ne pas bootstrap mes modules. Quand je débogue pour voir si les bootstraps de module sont appelés, ils n'apparaissent pas. Je suis toujours désemparé ... –

+0

Ajouter la ligne ci-dessus après le «edit ultérieur» :) –

+0

Hm rien de tout cela semble avoir un effet. Vous avez mentionné "alors utilisez simplement l'autochargeur." Comment suggérez-vous que je l'utilise? En créant un nouvel objet autoloader de module et l'ajouter à l'autochargeur? Donc, fondamentalement, comme je l'ai décrit dans la question. –

0

Lorsque vous amorcez vos modules, vous le faites en tant que Zend_Application_Module_Bootstrap. C'est évident mais le fichier devrait aussi être dans le dossier du module racine.

Questions connexes