2010-03-12 6 views
0

Je suis nouveau sur ZF et j'écris dans Zend Framework 1.10. Voici ma structure de répertoire d'application.Zend Framework Autoloading en 3 modules

APPLICATION_PATH` 
├─configs 
├─layouts 
└─modules 
    ├─admin 
    │ ├─controllers 
    │ ├─forms 
    │ ├─models 
    │ └─views 
    │  ├─filters 
    │  ├─helpers 
    │  └─scripts 
    │   ├─authentication 
    │   ├─cars 
    │   └─index 
    └─default 
     ├─controllers 
     ├─forms 
     │ └─admin 
     ├─models 
     │ └─DbTable 
     ├─plugins 
     └─views 
      ├─helpers 
      └─scripts 
       ├─about 
       ├─contact 
       ├─error 
       ├─index 
       ├─insurance 
       └─used-cars 

J'ai 3 fichiers Bootstrap.php à APPLICATION_PATH,/default/et/admin,

i utilisé AutoLoader pour charger les modèles et les formes

// APPLICATION_PATH/Bootstrap.php 
$modelLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => '', 'basePath' => APPLICATION_PATH . '/modules/default')); 

Le code ci-dessus chargera tous les modèles et forme automatiquement dans les modules/défaut, et maintenant, j'ai un problème pour appeler les formulaires et les modèles dans/modules/admin/models et/modules/admin/forms dans le module par défaut.

Des solutions pour résoudre ce problème? Comment nommer le nom de classe dans/modules/admin

Merci.

Répondre

3

chacun de vos modules doit avoir un module d'amorçage. Le module d'amorçage du module configure les autochargeurs par défaut pour ce module.

EN RÉPONSE À LA MISE A JOUR COMMENTAIRE:

assurez-vous que votre ini est configuré pour Bootstrap modules

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules[] = "" 

faire alors que chacun de vos modules a une classe d'amorçage (voir ci-dessus).

+0

Je l'ai fait et je les ai utilisés mais tous les bootstraps sont déclenchés quand l'application se charge? – Sjwdavies

+0

J'ai ajouté un autre morceau de code à ma réponse donnant des informations supplémentaires sur la façon de préparer vos modules pour bootstrap. Pour répondre à votre question: Oui, tous les bootstraps devraient être renvoyés SI vous avez configuré vos modules correctement. –

0

Essayez d'utiliser Zend Tool - il créera tous les chemins et fichiers nécessaires pour vous et est un bon moyen de démarrer avec Zend.

0

Tout ce que vous avez besoin de faire est d'ajouter un autre module chargeur automatique de charger le module Admin:

$adminLoader = new Zend_Application_Module_Autoloader(array(
    'namespace' => 'Admin', 'basePath' => APPLICATION_PATH . '/modules/admin')); 

ajouter après le auotloader original du module. Vous pouvez ensuite référencer des éléments dans le module Default en les créant simplement.

$form = new Admin_Form_TheForm(); 
+0

super ~ je vous ai eu ce que vous vouliez dire! merci. – haohan

+0

Mieux vaut laisser ZF faire cela pour vous dans le module bootstrap selon la réponse de Francis. –