Creare un modulo in magento 2

Creare un modulo per Magento 2

Francesco FrontaliBy Francesco FrontaliOttobre 7, 20205 Minuti

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
\Magento\Framework\Component\ComponentRegistrar::register(
  \Magento\Framework\Component\ComponentRegistrar::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 DoAgency\HelloWorld\Controller\Index;

class Hello extends \Magento\Framework\App\Action\Action
{
  protected $_pageFactory;

  public function __construct(
    \Magento\Framework\App\Action\Context $context,
    \Magento\Framework\View\Result\PageFactory $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.