Section: Créer un module
^ Développement d'un module | Développer un contrôleur » |
− Table des matières
Un module est un répertoire dans lequel il y a un certain nombre de classes et de fichiers qui concernent en général un domain fonctionnel précis. Ces fichiers sont organisés selon un arborescence prédéfinie, comme indiqué plus loin.
Créer un module ¶
Le principe : il suffit de créer un répertoire dans un dépôt de module, avec un nom précis, et d'y mettre les contrôleurs, autres composants et tout ce qu'il faut dans leurs sous-répertoires respectifs.
Le "dépôt" de module doit avoir au préalable été déclaré. Voir la section sur les répertoires de modules.
Le plus simple pour créer un module est d'utiliser la commande module:create
.
Dans votre application :
php dev.php module:create monmodule
Cela vous crée un module de nom "monmodule" dans le répertoire modules/
de
l'application, ainsi que l'arborescence classique d'un module et un contrôleur
par défaut.
- *Important** : Le nom des modules est repris dans certaines classes générées
automatiquement par Jelix, aussi ne peut-il comporter que des caractères
autorisés par PHP pour les noms de classes : lettres minuscules, majuscules, non
accentuées, les chiffres et le caractère
_
.
Par défaut, le module est créé dans le répertoire modules/
de
l'application, mais si vous voulez le créer dans un autre dépôt de module
déclaré avec jApp, vous pouvez indiquer son chemin (relatif ou absolu) après le
nom du module.
Cet exemple crée le module supermodule dans le répertoire lib/shared-modules/
php dev.php module:create supermodule ../lib/shared-modules/
Voir l'aide de la commande module:create
(avec --help
) pour connaître
d'autres options.
Indiquer le numéro de version et les dépendances ¶
Après avoir créer le module, vous devez vérifier que le numéro de version initial est bon pour vous. Par défaut, c'est 0.1pre. Vous devez aussi éventuellement indiquer les dépendances. Ces deux choses sont très importantes pour le système d'installation de jelix.
Vous pouvez indiquer le numéro de version à la commande module:create
, grâce
à l'option --ver
:
php dev.php module:create --ver 1.0 supermodule
Vous pouvez aussi le modifier directement dans le fichier module.xml
de
votre module.
Vous pouvez enfin définir les dépendances de votre module. Les dépendances sont
les modules nécessaires à l'exécution du nouveau module. Dans l'élément
<dependencies>
dans le fichier module.xml
, ajouter autant de balises
<module>
que de modules nécessaires.
<dependencies>
<jelix minversion="1.6" maxversion="1.6.*" />
<module name="jauth" minversion="1.2" />
<module name="anOtherModule" minversion="1.0" maxversion="1.4.*" />
</dependencies>
Les attributs minversion
et maxversion
sont facultatifs.
Pour plus de détails sur le contenu de module.xml et sur les dépendances, lisez le chapitre correspondant.
Arborescence d'un module ¶
Un module est un répertoire contenant au moins un fichier module.xml, qui contient certaines informations à propos de ce module : version, dépendances...
Et vous avez un certain nombre de répertoires, en fonction de ce que fourni le module, et contenant chacun des fichiers spécifiques. Voici les répertoires possibles :
controllers/
- les classes utilisées lorsque les URLs correspondantes sont appellées
classes/
- classes métiers, utilitaires, listener pour les évènements...
templates/
- fichier des contenus à envoyer au navigateur
responses/
- objets réponses que le module peut fournir pour l'application entière
locales/
- fichiers "properties", contenant les traductions pour les templates ou contrôleurs
zones/
- classes gérant des parties de pages HTML
daos/
- fichiers de mapping avec une base de données
forms/
- fichiers déclarant les formulaires
install/
- scripts d'installation et de mise à jour pour le module
Commands/
- commandes pour console.php
scripts/
- scripts à lancer en ligne de commandes (obsolète)
plugins/
- plugins pour les divers composants de Jelix (jDb, jTpl...)
www/
- images, CSS, fichiers Javascripts. Ces fichiers peuvent être utilisés par un navigateur, en appelant un contrôleur spécifique du module "jelix" (comme indiqué sur la page Générer une page HTML5)
tests/
- tests unitaires pour PHPUnit.