Zend – La gestion des modules

Posted by on Juil 29, 2012 in PHP, Zend | No Comments

Si comme moi vous utilisez le framework Zend pour développer, vous vous êtes vite rendu compte que la documentation est assez limitée, surtout en ce qui concerne la gestion des modules dans un projet. Comme j’ai moi même passé pas mal de temps à résoudre des problèmes liés au développement de module j’ai décidé de vous faire partager des petites astuces qui vous permettrons de gagner pas mal de temps.

Arborescence

Déjà pour vous faciliter la vie, voici à quoi doit ressembler l’arborescence de vos dossiers :

Arborescence modules Zend

Cette arborescence est à reproduire pour chaque module. Une fois que vous avez crées tout les dossiers, il faut déclarer à Zend l’utilisation des modules. C’est dans le fichier application/config/application.ini que ça se passe, il faut ajouter ces deux lignes :

En gros ça doit ressembler à ça :

fichier application.ini Zend

En ce qui concerne le nom des classes, au lieu de le préfixer par Application il faut les préfixer par le nom de votre module, par exemple : Article_ArticleController au lieux de Application_ArticleController c’est la seule différence.

Accéder à vos modules dans l’application principale

Si vous essayez d’instancier  une classe du module dans le controleur principal de l’application, vous allez avoir quelques problèmes. En effet Zend ne va pas trouver la classe en question. Pour résoudre ce problème il est possible de créer un autoloader pour chaque module qui sera lancé dans le Bootstrap de l’application. Ouvrez donc votre Bootstrap et insérez les lignes suivantes dans la fonction d’initialisation :

Bien entendu, dans cet exemple, mon module s’appelle article, il convient donc d’adapter les valeurs  ‘namespace’ et ‘basePath’  à vos besoins.

Faire un lien vers votre module

Dans zend pour faire des liens propres et dynamiques il est d’usage d’utiliser la fonction url de la vue comme par exemple :

Pour rediriger vers un module rien de plus simple, il suffit de le spécifier comme on le fait pour le reste :

Les formulaires dans les modules

Si vous crées un formulaires dans un module et que vous allez également faire face à un petit problème. En effet Zend ne va pas le trouver (même si vous l’appelez dans le module). Pour résoudre ce problème, rien de plus simple, il suffit de créer un fichier Bootstrap à la racine de votre module et d’y mettre la ligne suivante :

Ici encore mon module est Article il faut donc changer le nom par celui de votre application et magie, ça marche !

C’est tout pour le moment, avec ça vous devriez être assez tranquille, si vous avez d’autres astuces n’hésitez pas à m’en faire part, je les intégrerais à l’article.