2013-04-07 1 views
1

Peut-on avoir plusieurs modules dans un autre module?Modules imbriqués sur Zend Framework 2

Peut être une structure similaire à ceci:

/module 
    /Application 
     /module 
      /SubApplication1 
      /SubApplication2 

Je cherche un exemple simple ou quelqu'un article sais à ce sujet. J'ai googlé pour référence mais il semble que cette partie de zf2 n'est pas explorée jusqu'ici.

+0

Il est un moyen d'utiliser plusieurs espaces de noms dans un module, il est très simple. Jetez un coup d'oeil [ici] (http://stackoverflow.com/questions/15777140/multiple-namespaces-under-same-module-in-zf2/15779461#15779461) pour voir comment vous pouvez le faire. Pour faire ce que vous voulez faire, je pense que vous devrez travailler beaucoup avec 'ModuleManager'. –

Répondre

1

Il est facile d'avoir plusieurs espaces de noms dans votre module. La seule chose que vous devez faire est de fournir la configuration au (x) autochargeur (s) Zend. Pour la Zend\Loader\StandardAutoloader la configuration peut être réglée dans le module et ressemblerait à quelque chose comme ceci:

public function getAutoloaderConfig() 
{ 
    return array(
     'Zend\Loader\ClassMapAutoloader' => array(
      __DIR__ . '/autoload_classmap.php', 
     ), 
     'Zend\Loader\StandardAutoloader' => array(
      'namespaces' => array(
       // This is the default namespace most probably the module dir name 
       __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 
       // And this is for your custom namespace within the module 
       'SomeNamespace' => __DIR__ . '/src/' . 'SomeNamespace', 
       'OtherNamespace' => __DIR__ . '/src/' . 'OtherNamespace', 
      ), 
     ), 
    ); 
} 

Pour le Zend\Loader\ClassMapAutoloader est le même concept. Vous avez juste besoin de faire correspondre les espaces de noms aux fichiers de classe:

// file: ~/autoload_classmap.php 
return array(
    'SomeNamespace\Controller\SomeController' => __DIR__ . '/src/SomeNamespace/Controller/SomeController.php', 
    'OtherNamespace\Controller\OtherController' => __DIR__ . '/src/OtherNamespace/Controller/OtherController.php', 
); 

Quelque chose à être prudent! Assurez-vous que le nom de l'espace de nom de votre sous-module ne soit pas en conflit avec les espaces de noms d'autres modules.

Hope this helps :)

Stoyan