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.
Bonjour,
Sur le fichier « registration.php », il manque cette partie pour que le module soit déclaré sur et/config.php :
Merci d’avoir écris la partie manquante… …. …
J’ai du faire en plus :
1) effacer le contenu du dossier /var/di
2) lancer php bin/magento module:enable Maxime_Helloworld