Intro
Nell’articolo di oggi vedremo, in dettaglio, come creare un modulo per Magento 2. Nello specifico, creeremo un semplice plugin HelloWorld, attraverso cui illustreremo tutti i passaggi principali necessari alla realizzazione di un modulo.
Un modulo in Magento non è altro che una directory che contiene blocchi, controller, modelli, helper e tutti i file necessari al corretto funzionamento del plugin stesso. La cartella etc contiene l’admin ACL, il menu admin e le configurazioni. In Magento 2, i moduli custom vanno posizionati nella directory app / code, con questo formato: app/code/<Vendor>/<NomeModulo>. Detto questo, vediamo, uno per uno, tutti passaggi per creare un semplice modulo che giri su Magento 2 e visualizzi Hello World.
Creare un modulo per Magento 2
Per creare il modulo Hello World, è i passaggi di alto livello richiesti sono:
- Passaggio 1: creare la cartella del modulo Hello World
- Passaggio 2: creare il file etc/module.xml
- Passaggio 3: creare il file etc/registration.php
- Passaggio 4: creare il controller
- Passaggio 5: abilitare il modulo
Passaggio 1: creare la cartella del modulo Hello World
Il nome del modulo è definito come NomeVendor_NomeModulo. La prima parte è il nome del venditore e l’ultima parte è il nome del modulo: Ad esempio: Magento_Checkout o Amasty_ProductLabels. Quindi per prima cosa, creiamo la cartella:
app/code/DoAgency/HelloWorld/
Passaggio 2: creare il file etc/module.xml
Successivamente, è necessario creare la cartella ecc e aggiungere il file module.xml.
app/code/DoAgency/HelloWorld/etc/module.xml
Che deve contenere:
<?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="DoAgency_HelloWorld" setup_version="1.0.0"> </module> </config>
Passaggio 3: creare il file etc/registration.php
Aggiungere il file registration.php nel seguente path:
app/code/DoAgency/HelloWorld/registration.php
Deve contenere:
<?php MagentoFrameworkComponentComponentRegistrar::register( MagentoFrameworkComponentComponentRegistrar::MODULE, 'DoAgency_HelloWorld', __DIR__ );
Passaggio 4: creare il controller
In questa fase andiamo a creare il controller del modulo, cioè il componente che contiene la business logic del plugin stesso. Nel nostro caso ci permetterà di mostrare “Hello World” ad un determinato url.
Per prima cosa andiamo a creare una route per il nostro modulo, cioè un url che una volta navigato mostri la scritta “Hello World”. Le route in Magento hanno questa struttura:
http://<yourhost.com>/index.php/frontname/controller/action
Per aggiungere una route dobbiamo creare il file route.xml:
app/code/DoAgency/HelloWorld/etc/frontend/routes.xml
Che dovrà contenere:
<?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="helloworld" id="helloworld"> <module name="DoAgency_HelloWorld"/> </route> </router> </config>
A questo punto possiamo andare a creare il controller in:
app/code/DoAgency/HelloWorld/Controller/Index/Hello.php
Il cui contenuto, nel nostro caso, può essere il seguente:
<?php namespace DoAgencyHelloWorldControllerIndex; class Hello extends MagentoFrameworkAppActionAction { protected $_pageFactory; public function __construct( MagentoFrameworkAppActionContext $context, MagentoFrameworkViewResultPageFactory $pageFactory) { $this->_pageFactory = $pageFactory; return parent::__construct($context); } public function execute() { echo "Hello World"; exit; } }
Passaggio 5: abilitare il modulo
Ora non resta che eseguire l’ultimo passaggio, quello relativo all’abilitazione del modulo ormai completo.
Eseguiamo questa istruzione da riga di comando, dalla cartella root di Magento 2:
php bin/magento setup:upgrade
Dopo questa operazione potrebbe essere necessario eseguire un deploy degli Static Content (css, immagini) che a seguito del setup:upgrade potrebbero non essere più visibili a frontend:
php bin/magento setup:static-content:deploy php bin/magento cache:clean
A questo punto navigando l’url http://<yourhost.com>/helloworld/index/hello dovremmo essere in grado di visualizzare “Hello World”.
Hai un progetto in Magento 2 di cui vorresti parlarci? Contattaci.