Section: Créer un module
^ Développement d'un module | Installer un module » |
− Table des matières
Un module est un répertoire dans lequel il y a une arborescence précise. Les modules sont regroupés dans un ou plusieurs répertoires que l'on appelle groupe de modules, ou aussi dépôt de modules. Depuis Jelix 1.6.9, il est aussi possible d'avoir des modules seuls et de les déclarer.
Déclarer un dépôt de module ¶
Pour avoir accès aux modules, il faut déclarer ces dépôts de modules dans la configuration, par la propriété modulesPath. On peut y indiquer plusieurs chemins en les séparant par des virgules. On peut indiquer soit des chemins complets, soit des chemins relatifs à un répertoire spécifique de l'arborescence Jelix. Ces chemins relatifs ont une notation spéciale :
coderepertoire:chemin/relatif/
coderepertoire
est un de ces codes :
lib
- répertoire lib/ de jelix
app
- répertoire de l'application
Cela évite d'avoir à indiquer un véritable chemin relatif. Et donc d'avoir à
changer à la fois le fichier application.init.php
et le fichier de
configuration quand on fait une modification dans l'arborescence, quand on migre
l'application d'un serveur à un autre (entre le développement et la production
par exemple).
Exemple :
modulesPath = lib:jelix-modules/,app:modules/
On déclare ici qu'il y a deux dépôts de modules : le premier, jelix-modules/
,
se trouvant dans le répertoire lib/
de jelix; le deuxième, le répertoire
modules/
de l'application.
Tous les modules se trouvant dans ces deux répertoires pourront être activés dans l'application.
Déclarer un module seul ¶
Depuis Jelix 1.6.9, il est possible d'avoir un module en dehors d'un groupe de module (par exemple dans un paquet Composer). On peut alors indiquer directement son chemin dans la configuration de Jelix.
Cela se fera dans la section modules
, et non pas dans modulesPath
,
de cette manière, avec un paramètre en .path
.
Exemple :
[modules]
mon_module.access = 2
mon_module.path = app:vendor/un_nom/un_paquet/le_module
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 controleurs
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
scripts/
- scripts à lancer en ligne de commandes
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 ou Simpletests.
Créer un module ¶
Le principe : il suffit de créer un répertoire dans un dépôt, avec un nom précis, et d'y mettre les contrôleurs, les daos et tout ce qu'il faut dans leurs sous-répertoires respectifs.
Le plus simple est encore d'utiliser la commande createmodule
. Dans votre
application :
php cmd.php createmodule 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é dans modulesPath, vous pouvez l'indiquer après le nom du module,
en utilisant la même syntaxe que pour modulesPath, à savoir un chemin
absolu ou un chemin relatif précédé de "lib:" ou "app:".
Cet exemple crée le module supermodule dans le répertoire lib/shared-modules/
php cmd.php createmodule supermodule lib:shared-modules/
Voir l'aide en ligne de la commande createmodule
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 createmodule
, grâce
à l'option -ver
:
php cmd.php createmodule -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, lisez le chapitre correspondant.