Module personnalisé Magento : étape par étape pour le créer dans Magento 2

Publié: 2020-11-11

Le module personnalisé Magento est un processus de développement crucial pour tout développeur Magento. Comme vous le savez, à un moment donné, un développeur peut avoir besoin d'intégrer sa propre fonctionnalité ou module. Dans cet article de blog d'aujourd'hui, nous vous guiderons étape par étape pour développer un module personnalisé dans Magento 2

Dernière mise à jour : Nous venons de publier la version 2.0 du thème Claue Multipurpose Magento 2, avec de nombreuses améliorations de performances et des fonctionnalités exclusives. Découvrez ce thème maintenant : Thème Claue Magento 2. 0

claue2_edited (1)

Démo en direct

Claue - Clean, Minimal Magento 2 & 1 Theme est un excellent modèle pour une boutique de commerce électronique moderne et propre avec plus de 40 mises en page de page d'accueil et des tonnes d'options pour les mises en page de magasin, de blog, de portefeuille, de localisateur de magasin et d'autres pages utiles. La version 2. 0 de Claue est livrée avec un tas de fonctionnalités exclusives, notamment :

  • Être basé sur le thème Luma.
  • Répondre à toutes les normes du thème Magento
  • Amélioration significative des performances
  • Compatible avec la plupart des extensions tierces.
  • Entièrement compatible avec Magento 2.4.x

Cette deuxième version avancée se différencie complètement de la précédente. Ainsi, si vous utilisez la version 1 de Claue et que vous souhaitez mettre à jour vers la version 2 de Claue, vous ne pouvez que reconstruire un nouveau site Web plutôt que de mettre à jour à partir de l'ancienne version. Maintenant, revenons au sujet principal.

Magento est une plate-forme très polyvalente dotée de nombreuses fonctionnalités utiles et prenant en charge les modules gratuits et payants. Il fournit des modules qui peuvent être installés en ligne ainsi que peuvent être personnalisés afin de répondre aux besoins du client. La personnalisation est réalisée en générant un module et peut ensuite être modifiée selon le choix en utilisant la puissance du langage PHP. Par exemple, si notre site Web a une fonctionnalité spécifique ou un ensemble de fonctionnalités ou d'exigences qui ne sont pas communes au marché, un module peut combler cette lacune pour nous.

Magento est livré avec 3 types de pool de code (Code, Core et Local) où résident les modules personnalisés et principaux. Le pool local (dossier) est l'endroit où tous les modules personnalisés résident ou doivent être placés. Vous trouverez ci-dessous les composants qu'un module doit inclure.

  • Blocs – Ici, vous devez fournir les fonctionnalités utilisées pour afficher les données dans nos modèles.
  • Modèles – Toute la logique métier est contenue ici.
  • Ressource – Les modèles incluent des fonctions utilisées pour l'interaction avec la base de données.
  • Contrôleurs - Définit la mise en page et bloque les fichiers et sont chargés lorsqu'une URL est demandée.
  • etc - Inclut des fichiers de configuration au format XML qui montrent à Magento combien de modules de fichiers ont et comment le module interagit.
  • Aides – Inclut les fonctions utilisées pour définir la logique métier commune (telle que le redimensionnement de l'image, la validation). Ces fonctions peuvent être utilisées n'importe où dans l'application Magento
  • sql – Contient des scripts SQL pour créer, modifier ou supprimer des tables SQL.

Comment créer un module personnalisé Magento ?

Créer un module simple dans Magento 2

Générer un module simple dans Magento 2 est facile. Vous devrez réaliser les tâches suivantes :

  • Créer un nouveau répertoire pour le module
  • Créer un script registration.php
  • Créer un fichier d'informations etc/module.xml
  • Installer le nouveau module

Créer un nouveau répertoire pour le module

Il y a deux options à sélectionner pour la position du nouveau répertoire

  • app/code/{vendor}/
  • vendor/{vendor}/

Vous pouvez choisir la première option si votre module est destiné à une boutique en ligne spécifique sur laquelle vous travaillez. Mais si vous générez un module dans le but de l'utiliser sur divers sites Web, il est plus approprié de sélectionner la deuxième option. Maintenant, je vais utiliser la première option pour cet exemple.

Tout d'abord, vous devez créer un répertoire nommé EndPoint (nom de notre fournisseur) avec un sous-répertoire à l'intérieur, MyModule :

 cd {website_root} mkdir -p app/code/EndPoint/MyModule

Créer le script registration.php

Le fichier registration.php indique à Magento d'enregistrer le nouveau module sous un nom et un emplacement spécifiques.

Générez un fichier nommé app/code/EndPoint/MyModule/registration.php avec le code ci-dessous

 <?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'EndPoint_MyModule' , __DIR__ );

Créer le fichier d'informations etc/module.xml

À cette étape, vous devez créer notre fichier d'informations sur le module, où nous spécifierons le numéro de version du module. Tout d'abord, nous devons générer le répertoire etc dans app/code/EndPoint/MyModule :

 mkdir app/code/EndPoint/MyModule/etc

puis créez module.xml avec la ligne de commande suivante

 <?xml version="1.0"?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:Module/etc/module.xsd" > < module name = "EndPoint_MyModule" setup_version = "1.0.0" > </ module > </ config >

Installer le nouveau module

Maintenant, nous devons installer et activer le nouveau module, donc à partir de la racine de notre site Web, nous devons exécuter la commande

 php bin/magento setup:upgrade

Magento sortira une liste de noms de modules et de mises à jour de configuration et le nouveau module EndPoint_MyModule devrait être répertorié dans cette liste

Ajouter une route personnalisée à notre module

Nous avons maintenant un module fonctionnel et activé, mais il ne fait encore rien ! Quel est un moyen simple de vérifier que notre module est activé ? Configurons une route personnalisée, donc si nous atteignons une URL comme https://{our_website}/mymodule/test/helloworld nous pouvons renvoyer une réponse personnalisée d'un contrôleur.

La création d'un itinéraire personnalisé nécessite quelques étapes :

  • Créer un nouveau répertoire pour le contrôleur
  • Créer un fichier etc/routes.xml
  • Créer le contrôleur
  • Mettre à niveau le nouveau module

Créer un nouveau répertoire pour le contrôleur

Tout d'abord, nous devons créer un nouveau répertoire dans lequel vivra le nouveau contrôleur PHP pour notre route personnalisée. Le nouveau chemin d'accès au répertoire doit être :

app/code/EndPoint/MyModule/Controller

Vous pouvez générer autant de niveaux de répertoire que vous le souhaitez, en fonction du chemin souhaité. Par exemple, si vous générez une classe nommée Index dans app/code/EndPoint/MyModule/Controller , l'URL qui sera routée vers ce contrôleur sera https://{our_website}/mymodule/index (le répertoire "Controller" est ignoré).

Si vous générez une classe nommée HelloWorld dans app/code/EndPoint/MyModule/Controller/Test , l'URL résultante sera https://{our_website}/mymodule/test/helloworld .

Créez le fichier etc/routes.xml

routes.xml indiquera à Magento quelle URL de base sera utilisée pour notre module. Tout d'abord, nous devons créer le répertoire "frontend" où le fichier routes.xml doit être placé :

 mkdir app/code/EndPoint/MyModule/etc/frontend

Lorsque vous avez besoin que l'URL de base soit MyModule , vous devez générer un fichier XML dans le nouveau répertoire qui acheminera toutes les requêtes effectuées vers l'URL donnée vers nos contrôleurs de module :

 <?xml version="1.0" ?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:App/etc/routes.xsd" > < router id = "standard" > < route frontName = "mymodule" id = "mymodule" > < module name = "EndPoint_MyModule" /> </ route > </ router > </ config >

Créer le contrôleur

Si nous voulons répondre aux requêtes pour https://{our_website}/mymodule/test/helloworld vous devrez générer le répertoire de base du Controller et le sous-répertoire Test :

 mkdir -p app/code/EndPoint/MyModule/Controller/Test

Sous ce répertoire, vous devez générer notre contrôleur Magento personnalisé. Tous les contrôleurs de route doivent étendre \Magento\Framework\App\Action\Action . Nous avons également besoin d'une méthode publique construct() pour transmettre le contexte à notre ancêtre et d'une fonction execute() qui sera appelée lorsque l'URL sera atteinte :

 <?php namespace EndPoint \ MyModule \ Controller \ Test ; class HelloWorld extends \ Magento \ Framework \ App \ Action \ Action { public function __construct ( \Magento\Framework\App\Action\Context $context ) { parent ::__construct( $context ); } public function execute () { echo "Hello world!" ; } }

Mettre à niveau le nouveau module

À cette étape, vous devez mettre à niveau notre configuration Magento. Mais parce que vous avez inclus un nouveau contrôleur qui obtient les paramètres de l'injecteur de dépendance dans la construction. Vous devez également compiler le moteur d'injection de dépendances (comme les fabriques, les proxys et les intercepteurs). Enfin, vous devez vider le cache afin que le nouveau contenu soit servi à partir de notre URL personnalisée :

 php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:flush

Et c'est tout. Ouvrez l' URL /helloworld/index/index dans votre navigateur et vous devriez obtenir quelque chose comme ceci : Cela signifie que notre module fonctionne !

module personnalisé magento

Il s'agit de la fin des tutoriels : Module personnalisé Magento : étape par étape pour le créer dans Magento 2. Nous espérons que ce blog vous sera utile. Si vous souhaitez en savoir plus sur Magento, vous pouvez lire notre article sur la plate-forme Magento pour plus de détails. N'oubliez pas également de consulter nos extensions Magento 2 et nos thèmes Magento 2 pour prendre en charge votre site Web.