← Tous les articles >
magento2phpecommerceadobe-commercemodule-development

Créer un Module Magento 2 de A à Z (Guide 2026)

Share: LinkedIn X Facebook

Magento 2 est l’une des plateformes eCommerce les plus extensibles disponibles. Créer un module personnalisé de A à Z est une compétence fondamentale qui permet des personnalisations métier, des intégrations tierces et des optimisations de performances sans modifier les fichiers cœur de Magento.

Table des matières

  1. Prérequis
  2. Structure du module
  3. Créer la structure des répertoires
  4. registration.php
  5. module.xml
  6. Activer le module
  7. Ajouter un contrôleur et une route
  8. Créer un modèle et un ResourceModel
  9. Injection de dépendances
  10. Observateur / Événement
  11. Meilleures pratiques de déploiement
  12. Erreurs courantes
  13. FAQ

Prérequis

ComposantVersion recommandée
Magento / Adobe Commerce2.4.7 – 2.4.8
PHP8.2 ou 8.3
Composer2.x
MySQL / MariaDB8.0+
Elasticsearch / OpenSearch8.x

Astuce SEO : Si vous développez une extension pour distribution sur Adobe Commerce Marketplace, suivez les normes de codage officielles dès le départ.

Structure du module

Un module Magento 2 typique suit une architecture stricte :

app/code/Vendor/ModuleName/
├── registration.php
├── etc/
├── Controller/
├── Model/
├── Block/
├── view/
└── Setup/

Étape 1 — Créer la structure des répertoires

mkdir -p app/code/MagentoMastery/HelloWorld/etc/frontend
mkdir -p app/code/MagentoMastery/HelloWorld/Controller/Index
mkdir -p app/code/MagentoMastery/HelloWorld/Model/ResourceModel/ExampleModel
mkdir -p app/code/MagentoMastery/HelloWorld/view/frontend/{layout,templates}
mkdir -p app/code/MagentoMastery/HelloWorld/Setup

Étape 2 — registration.php

use Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(
    ComponentRegistrar::MODULE,
    'MagentoMastery_HelloWorld',
    __DIR__
);

Étape 3 — module.xml

<module name="MagentoMastery_HelloWorld" setup_version="1.0.0">
</module>

Étape 4 — Activer le module

php bin/magento module:enable MagentoMastery_HelloWorld
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:flush

Étape 5 — Ajouter un contrôleur et une route

Définissez votre route dans routes.xml et créez un contrôleur implémentant HttpGetActionInterface.

Bonne pratique pour 2026 : Préférez HttpGetActionInterface et HttpPostActionInterface plutôt que d’étendre la classe Action obsolète.

Étape 6 — Créer un modèle et un ResourceModel

Magento utilise le pattern Modèle / ResourceModel / Collection :

  • Modèle : Logique métier
  • ResourceModel : Accès à la base de données
  • Collection : Récupération et filtrage des données

Étape 7 — Injection de dépendances

Exemple di.xml :

<preference for="Vendor\Module\Api\ExampleInterface"
            type="Vendor\Module\Model\ExampleModel"/>

Étape 8 — Observateur / Événement

Les observateurs permettent de réagir aux événements Magento sans modifier les classes cœur.

Exemple d’événement :

<event name="catalog_product_save_after">
    <observer name="vendor_product_save"
              instance="Vendor\Module\Observer\ProductSaveAfter"/>
</event>

Étape 9 — Meilleures pratiques de déploiement

php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy -f
php bin/magento cache:flush

Meilleures pratiques de développement

  • Utilisez declare(strict_types=1).
  • Préférez l’injection de dépendances par constructeur.
  • Évitez l’utilisation directe d’ObjectManager.
  • Utilisez les Schema/Data Patches plutôt que InstallSchema lorsque c’est possible.
  • Écrivez des tests unitaires et d’intégration.
  • Suivez les normes de codage PSR-12.

Erreurs courantes

ErreurCauseSolution
Module introuvableNom de module incorrectVérifiez registration.php et module.xml
Code de zone non définiImplémentation de contrôleur incorrecteUtilisez HttpGetActionInterface
Impossible d’instancier l’interfacePréférence DI manquanteConfigurez di.xml
Page blancheErreur PHPVérifiez les logs
Problèmes de cacheConfiguration obsolèteVidez le cache

FAQ

Dois-je utiliser InstallSchema ou DB Patches ?

Les DB Patches (DataPatchInterface et SchemaPatchInterface) sont l’approche recommandée dans les versions modernes de Magento.

Mon module retourne une erreur 404. Que dois-je vérifier ?

  1. Vérifiez routes.xml
  2. Vérifiez le nom et la casse du contrôleur
  3. Videz le cache
  4. Recompilez le DI

Conclusion

Vous avez désormais les bases d’un module Magento 2 prêt pour la production, incluant contrôleurs, modèles, injection de dépendances et observateurs.

Prochaines étapes :

  • Implémenter des Service Contracts
  • Créer des API REST personnalisées
  • Explorer les résolveurs GraphQL
  • Ajouter des tests d’intégration
  • Personnaliser le checkout Magento 2 — ajouter des champs, surcharger les composants Knockout et créer des étapes personnalisées

Besoin d’un module prêt pour la production selon les standards Magento ? Voir mes services de développement de modules personnalisés .