Seguici su:

Magento 2.X – Creare un semplice Modulo

Magento-2-Creare-Modulo-di-Base

Magento 2.X – Creare un semplice Modulo

Modulo di base per Magento 2

Andiamo a creare un modulo di base per Magento 2 che chiameremo Easy e come vendor useremo Tutorial4dev. Il percorso del modulo sarà <VendorName>/<ModuleName>

Iniziamo col creare il file registration.php che ci permette di creare e registrare il modulo in Magento 2 e abilita la creazione dei componenti tramite la classe  Magento\Framework\Component\ComponentRegistrar.

I componenti che possiamo creare in magento sono definiti tramite le seguenti costanti:

Magento\Framework\Component\ComponentRegistrar::MODULE
Magento\Framework\Component\ComponentRegistrar::LIBRARY
Magento\Framework\Component\ComponentRegistrar::THEME
Magento\Framework\Component\ComponentRegistrar::LANGUAGE

Quindi il nostro file di registrazione sarà strutturato come segue:

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

Come secondo passo creaimo il file module.xml nella directory app/code/Tutorial4dev/Easy/etc/module.xml che ha un tag<module></module> con due attributi che sono obbligatori name e setup_version mentre il tag <sequence></sequence> è opzionale e si usa per definire le possibili dipendenze del modulo che stiamo creando.

<?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="Tutorial4dev_Easy" setup_version="1.0.0">
        <sequence>
            <module name="Magento_Store"/>
            <module name="Magento_Backend"/>
            <module name="Magento_Config"/>
        </sequence>
    </module>
</config>

Come ultimo passo andiamo a creare il file composer.json che non è obbligatorio per la creazione di un modulo in Magento 2 ma è una buona prassi usarlo.

{
  "name": "tutorial4dev/module-easy",
  "description": "The Easy module",
  "require": {
      "php": "^7.2"
  },
  "type": "magento2-module",
  "version": "1.0.0",
  "license": [
    "OSL-3.0",
    "AFL-3.0"
  ],
  "autoload": {
    "files": [
      "registration.php"
    ],

    "psr-4": {
      "Tutorial4dev\\Easy\\": ""
    }
  }
}

I tipi supportati dal campo type sono:

magento2-module    //per i moduli
magento2-theme     //per i temi
magento2-language  //per le lingue
magento2-component //generale per tutti gli altri diversi da quelli indicati sopra

Ora dobbiamo solo abilitare il modulo con il comando php bin/magento module:enable Tutorial4dev_Easy

php bin/magento module:enable Tutorial4dev_Easy
The following modules have been enabled:
- Tutorial4dev_Easy

To make sure that the enabled modules are properly registered, run 'setup:upgrade'.
Cache cleared successfully.
Generated classes cleared successfully. Please run the 'setup:di:compile' command to generate classes.
Info: Some modules might require static view files to be cleared. To do this, run 'module:enable' with the --clear-static-content option to clear them.

Come indicato nel messaggio restituito da magento, per essere sicuri che il modulo sia stato registrato correttamente, dobbiamo eseguire il comando php bin/magento setup:upgrade

php bin/magento setup:upgrade

Cache cleared successfully
File system cleanup:
.........................
Module 'Temando_Shipping':
Module 'Tutorial4dev_Easy':
Module 'Vertex_Tax':
Nothing to import.

Ora il modulo risulta installato su Magento 2. Una lista dei comandi di magento la potete trovare in questa pagina  Magento 2.X – Command Line

È buona pratica, quando si creano moduli di magento complessi con più moduli, di usare un modulo Core in cui si sviluppano delle funzioni comuni e condivise che possono essere usate con tutti gli altri moduli del progetto.

Puoi scaricare il modulo al seguente indirizzo di GitHub

Pasquale Guarino

pasquale.guarino80@gmail.com