Formation Magento 2 : Chapitre 2 – Partie A

Création des fichiers

Rendez-vous dans le dossier « app/code », vous verrez un dossier « Magento ». Vous ne devez en aucun cas modifier le contenu de ce dossier, il contient les modules natifs, et sont modifiés uniquement par Magento. Dans ce dossier « app/code » nous allons créer notre propre « namespace » (dans mon exemple je l’appellerai « Maxime »).

Dans ce « namespace », nous allons y ajouter nos « modules ». Le but de ce tuto pour le moment est de simplement déclarer un nouveau module. Créez un dossier « Helloworld » dans le dossier « Maxime ».

Pour que Magento aie les instructions à suivre de notre module, nous devons lui communiquer certaines information. Créez un dossier « etc » puis créez le fichier suivant :

app/code/Maxime/Helloworld/etc/module.xml

Y mettre dedans le XML ci-dessous :

<?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="Maxime_Helloworld" setup_version="1.0.0.0"/>
</config>

La balise module contient :
– Le nom de notre module (name)
– La version de notre module (setup_version)

Enregistrement de votre module

Créez un fichier « registration.php » à la racine de votre module qui contiendra le contenu suivant :

<?php
/**
 * Copyright © 2015 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Maxime_Helloworld',
    __DIR__
);

Activation du module

Si vous regardez le fichier app/etc/config.php vous constaterez que votre module n’est pas présent.

<?php
return array (
  'modules' => 
  array (
    'Magento_Store' => 1,
    'Magento_AdvancedPricingImportExport' => 1,
    'Magento_Directory' => 1,
    'Magento_Theme' => 1,
    'Magento_Backend' => 1,
    'Magento_Backup' => 1,
    'Magento_Eav' => 1,
    'Magento_Customer' => 1,
    'Magento_BundleImportExport' => 1,
    'Magento_CacheInvalidate' => 1,
    'Magento_Indexer' => 1,
    'Magento_Cms' => 1,
    'Magento_CatalogImportExport' => 1,
    'Magento_Catalog' => 1,
    'Magento_Rule' => 1,
    'Magento_Search' => 1,
    'Magento_CatalogUrlRewrite' => 1,
    'Magento_Widget' => 1,
    'Magento_Payment' => 1,
    'Magento_CheckoutAgreements' => 1,
    'Magento_Quote' => 1,
    'Magento_CmsUrlRewrite' => 1,
    'Magento_Config' => 1,
    'Magento_ConfigurableImportExport' => 1,
    'Magento_Msrp' => 1,
    'Magento_Contact' => 1,
    'Magento_Cookie' => 1,
    'Magento_Cron' => 1,
    'Magento_CurrencySymbol' => 1,
    'Magento_Bundle' => 1,
    'Magento_CustomerImportExport' => 1,
    'Magento_DesignEditor' => 1,
    'Magento_Developer' => 1,
    'Magento_Dhl' => 1,
    'Magento_Authorization' => 1,
    'Magento_Downloadable' => 1,
    'Magento_SalesSequence' => 1,
    'Magento_Email' => 1,
    'Magento_Fedex' => 1,
    'Magento_Sales' => 1,
    'Magento_CatalogInventory' => 1,
    'Magento_GoogleAnalytics' => 1,
    'Magento_GoogleOptimizer' => 1,
    'Magento_GroupedImportExport' => 1,
    'Magento_GroupedProduct' => 1,
    'Magento_ImportExport' => 1,
    'Magento_Checkout' => 1,
    'Magento_User' => 1,
    'Magento_LayeredNavigation' => 1,
    'Magento_Log' => 1,
    'Magento_MediaStorage' => 1,
    'Magento_ConfigurableProduct' => 1,
    'Magento_Multishipping' => 1,
    'Magento_Newsletter' => 1,
    'Magento_OfflinePayments' => 1,
    'Magento_SalesRule' => 1,
    'Magento_PageCache' => 1,
    'Magento_Authorizenet' => 1,
    'Magento_Paypal' => 1,
    'Magento_Persistent' => 1,
    'Magento_ProductAlert' => 1,
    'Magento_Braintree' => 1,
    'Magento_Reports' => 1,
    'Magento_RequireJs' => 1,
    'Magento_Review' => 1,
    'Magento_Rss' => 1,
    'Magento_CatalogRule' => 1,
    'Magento_GoogleAdwords' => 1,
    'Magento_OfflineShipping' => 1,
    'Magento_GiftMessage' => 1,
    'Magento_SampleData' => 1,
    'Magento_CatalogSearch' => 1,
    'Magento_SendFriend' => 1,
    'Magento_Shipping' => 1,
    'Magento_Sitemap' => 1,
    'Magento_AdminNotification' => 1,
    'Magento_Tax' => 1,
    'Magento_TaxImportExport' => 1,
    'Magento_Captcha' => 1,
    'Magento_Translation' => 1,
    'Magento_Ui' => 1,
    'Magento_Ups' => 1,
    'Magento_UrlRewrite' => 1,
    'Magento_Integration' => 1,
    'Magento_Usps' => 1,
    'Magento_Variable' => 1,
    'Magento_Version' => 1,
    'Magento_Webapi' => 1,
    'Magento_Weee' => 1,
    'Magento_CatalogWidget' => 1,
    'Magento_Wishlist' => 1,
  ),
);

Lancez la commande suivante à la racine de votre Magento 2 :

./bin/magento setup:upgrade

Votre module apparaît maintenant dans le fichier config.php

Sinon vous pourrez avoir cette erreur en accédant à votre site :
Please upgrade your database: Run "bin/magento setup:upgrade" from the Magento root directory.
Votre module est à présent déclaré est activé. Prochaine étape, nous allons créer un controller pour pouvoir appeler notre module depuis une URL du site.

Continuer la formation
Revenir à la partie précédente
Déclarer un nouveau module sous Magento 2
Taggé sur :    

3 thoughts on “Déclarer un nouveau module sous Magento 2

  • 04/05/2017 à 08:17
    Permalink

    Bonjour,

    Sur le fichier « registration.php », il manque cette partie pour que le module soit déclaré sur et/config.php :

    Répondre
    • 04/02/2020 à 17:49
      Permalink

      Merci d’avoir écris la partie manquante… …. …

      Répondre
  • 31/03/2019 à 17:05
    Permalink

    J’ai du faire en plus :
    1) effacer le contenu du dossier /var/di
    2) lancer php bin/magento module:enable Maxime_Helloworld

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous utilisons des cookies afin de nous assurer de vous proposer la meilleure expérience sur ce site.
Ok