En général, la première étape de la création d’une personnalisation est la construction d’un module.
Pour créer un module, vous devez suivre les étapes de haut niveau suivantes :
• Créer le dossier du module.
• Créer le fichier etc/module.xml.
• Créer le fichier registration.php.
• Exécutez le script bin/magento setup:upgrade pour installer le nouveau module.
• Vérifiez que le module fonctionne.
• Passons en revue chacune de ces étapes en détail.
Créez le dossier du module
Il y a deux emplacements possibles pour les modules dans Magento 2 : le dossier app/code et le dossier vendor
Selon la façon dont Magento 2 a été installé, les modules de base peuvent se trouver soit dans les dossiers vendor/magento/magento-* (pour l’installation du compositeur), soit dans le dossier app/code/Magento/ (pour le clonage de GitHub).
Lequel de ces emplacements devriez-vous choisir pour votre nouveau module ?
Si vous construisez un module pour un projet spécifique, il est préférable de choisir le dossier app/code et de s’engager dans le dépôt du projet.
Si vous construisez une extension pour être réutilisée, il est préférable d’utiliser le compositeur pour la créer, et de mettre votre module dans le dossier vendor/<YOUR_VENDOR>/module-something.
Chaque nom de module dans Magento 2 se compose de deux parties – le vendor et le module lui-même. En d’autres termes, les modules sont regroupés en vendeurs, vous devez donc définir le nom du vendeur et celui du module. Pour cet exemple, nommons le vendeur « Learning » et le module « FirstUnit ».
Créez le dossier app/code/Learning et placez un autre dossier à l’intérieur de ce dossier : FirstUnit. Si vous utilisez la ligne de commande, le code sera :
• cd à la racine du dossier
• mkdir app/code/Learning
• mkdir app/code/Learning/FirstUnit
Assurez-vous que vous avez la permission de créer des fichiers et des dossiers dans votre installation
Ensuite, vous devez créer un fichier etc/module.xml. Ce fichier est nécessaire pour que le module existe.
Ce fichier contient les informations suivantes :
Nom du module
Version du module
Dépendances
Le nom du module est défini par les dossiers que nous venons de créer, car dans Magento 2, les noms de classe doivent suivre la structure des dossiers. Comme nous avons créé les dossiers Learning/FirstUnit, le nom de notre module sera Learning_FirstUnit et toutes les classes qui appartiennent à ce module commenceront par Learning\FirstUnit – par exemple : Learning\FirstUnit\Observer\Test.
La version du module indique la version actuelle du schéma et des données de la base de données, et est utilisée pour la mise à niveau. Par exemple, supposons que vous décidiez de modifier le schéma d’une table dans votre module. Comment pouvez-vous être sûr que ce changement se produira dans toutes les instances où le code est déployé ? La modification de la base de données par des requêtes SQL directes ne fonctionnera pas. A la place, Magento 2 dispose de scripts d’installation et de mise à jour dans chaque module (en option). Ces scripts contiennent des commandes permettant de modifier le schéma ou les données de la base de données. Pour savoir s’il faut exécuter un script ou non, Magento 2 utilise les versions des modules. Chaque fois que vous implémentez un changement de base de données, vous implémentez une nouvelle version d’un module et changez le module.xml correspondant. Magento enregistre la version actuelle du module dans une base de données, et si la valeur de la base de données et celle du module.xml ne correspondent pas, il exécute le code de mise à jour.
Dépendances. Si un module dépend d’un autre, le fichier module.xml aura une déclaration spéciale qui définit une liste de modules dont le module actuel dépend. Pour cet exemple, nous allons rendre notre module dépendant de Magento_Catalog.
En utilisant le code de ligne de commande suivant, créez le dossier app/code/Learning/FirstUnit/etc :
mkdir app/code/Learning/FirstUnit/etc
Ensuite, mettez-y le code suivant :
<?xml version= »1.0″?>
<config xmlns:xsi= »http://www.w3.org/2001/XMLSchema-instance » xsi:noNamespaceSchemaLocation= »urn:magento:framework:Module/etc/module.xsd »>
<nom du module= »Learning_FirstUnit » setup_version= »0.0.1″> <séquence>
<nom du module= »Magento_Catalog »/> </séquence>
</module>
</config>
Notez que dans le fichier XML que nous avons spécifié :
Nom du module : Learning_FirstUnit (basé sur les dossiers que nous avons créés)
Version : 0.0.1 (version initiale de notre module)
Dépendance : Magento_Catalogue. Nous pourrions avoir de multiples dépendances. Dans ce cas, nous mettrions <nom du module= ».. » /> sous le nœud de la séquence.
Créer le fichier registration.php
Chaque module doit disposer de ce fichier, qui indique à Magento comment localiser le module. Pour continuer notre exemple, créez le fichier app/code/Learning/FirstUnit/registration.php. Ensuite, placez-y le contenu suivant :
<?php \Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE, ‘Learning_FirstUnit’,
__DIR__
) ;
Le fichier registration.php est un fichier standardisé qui suit le même modèle pour tous les modules.
La seule chose qui varie est le nom du module, qui dans notre cas est Learning_FirstUnit.
Exécutez la commande « setup:upgrade ».
L’exécution de cette commande rend votre nouveau module actif, en notifiant Magento de sa présence.
php bin/magento setup:upgrade
Il devrait faire écho à une grande quantité de données, dont une ligne devrait être Learning_FirstUnit. Vérifiez que cette ligne de code est bien là.