Come creare un modulo personalizzato in Magento 2

Pubblicato: 2018-03-19

Cos'è il modulo Magento?

Come sapete, il modulo è una directory che contiene blocchi , controller , modelli , helper , ecc., che sono correlati a una specifica funzionalità aziendale.

In linea con l'impegno di Magento per una modularità ottimale, un modulo incapsula una funzionalità e ha dipendenze minime da altri moduli.

I moduli forniscono funzionalità aziendali, con logica di supporto, mentre i temi influenzano fortemente l'esperienza dell'utente e l'aspetto della vetrina.

Scopo del modulo

Lo scopo di ogni modulo è fornire caratteristiche specifiche del prodotto implementando nuove funzionalità o estendendo la funzionalità di altri moduli. Ogni modulo è progettato per funzionare in modo indipendente, quindi l'inclusione o l'esclusione di un particolare modulo non influisce in genere sulla funzionalità di altri moduli.

In Magento 2, i moduli saranno attivi nella directory app/code di un'installazione Magento, con questo formato: app/code/<Vendor>/<ModuleName>. Ora seguiremo questi passaggi per creare un semplice modulo che funzioni su Magento 2.

Crea un modulo Magento 2

  1. Crea la cartella del modulo.
  2. Crea il file etc/module.xml.
  3. Crea il file registration.php.
  4. Esegui lo script bin/magento setup:upgrade per installare il nuovo modulo.
  5. Verificare che il modulo funzioni.

Esaminiamo in dettaglio ciascuno di questi passaggi.

Passaggio 1: crea la cartella del modulo

  • Ci sono due possibili posizioni per i moduli in Magento 2: la cartella app/codice e la cartella del fornitore

A seconda di come è stato installato Magento 2, i moduli principali possono trovarsi nelle cartelle vendor/magento/magento-* (per l'installazione del compositore) o nella cartella app/code/Magento/ (per la clonazione di github).

  • Quale di queste posizioni dovresti scegliere per il tuo nuovo modulo?

Se crei un modulo per un progetto specifico, è meglio scegliere la cartella app/codice e impegnarti nel repository del progetto.

Se crei un'estensione da riutilizzare, è meglio usare il compositore per crearla e inserire il tuo modulo nella cartella vendor/<YOUR_VENDOR>/module-something.

Ogni nome di modulo in Magento 2 è composto da due parti: il fornitore e il modulo stesso, quindi è necessario definire il fornitore e i nomi dei moduli. Per questo esempio, chiamiamo il fornitore “Learning” e il modulo “FirstUnit”.

Creiamo la cartella app/codice/Apprendimento e all'interno di questa cartella inseriamo un'altra cartella: FirstUnit. Se stai usando la riga di comando, il codice sarebbe:

  1. cd nella cartella principale
  2. mkdir app/codice/Apprendimento
  3. mkdirapp/code/Learning/FirstUnit

Assicurati di avere l'autorizzazione per creare file e cartelle nella tua installazione.

Passaggio 2: crea il file etc/module.xml

Questo file è necessario per l'esistenza del modulo e contiene le seguenti informazioni:

  • Nome del modulo
  • Versione modulo
  • Dipendenze

Il nome del modulo è definito dalle cartelle che abbiamo appena creato, perché in Magento 2 i nomi delle classi devono seguire la struttura delle cartelle. Poiché abbiamo creato le cartelle Learning/FirstUnit, il nome del nostro modulo sarà Learning_FirstUnit e tutte le classi che appartengono a questo modulo inizieranno con Learning\FirstUnit, ad esempio: Learning\FirstUnit\Observer\Test.

La versione del modulo indica la versione corrente dello schema e dei dati del database e viene utilizzata per l'aggiornamento. Ad esempio, supponi di decidere di modificare lo schema di una tabella nel tuo modulo. Come puoi essere sicuro che questa modifica avvenga in tutte le istanze in cui è distribuito il codice? La modifica del database tramite query SQL dirette non funzionerà. Invece, Magento 2 ha script di installazione e aggiornamento in ogni modulo (opzionale). Questi script contengono comandi per modificare lo schema oi dati del database. Per tenere traccia dell'esecuzione o meno di uno script, Magento 2 utilizza le versioni dei moduli. Ogni volta che si implementa una nuova modifica del database, si implementa una nuova versione di un modulo e si modifica il corrispondente module.xml. Magento salva la versione del modulo corrente in un database e se il valore del database e quello nel module.xml non corrispondono, eseguirà il codice di aggiornamento.

Dipendenze. Se un modulo dipende da un altro, il file module.xml avrà una dichiarazione speciale che definisce un elenco di moduli da cui dipende il modulo corrente. Per questo esempio, renderemo il nostro modulo dipendente da Magento_Catalog.

Usando il seguente codice della riga di comando, crea la cartella app/code/Learning/FirstUnit/etc :

 mkdir app/codice/Apprendimento/Prima unità/ecc

Quindi crea un file XML con il seguente contenuto:

 <?versione xml="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Learning_FirstUnit" setup_version="0.0.1">
        <sequenza>
            <module name="Magento_Catalog" />
        </sequenza>
    </modulo>
</config>

Si noti che nel file XML abbiamo specificato:

  • Nome del modulo: Learning_FirstUnit (basato sulle cartelle che abbiamo creato)
  • Versione: 0.0.1 (versione iniziale del nostro modulo)
  • Dipendenza: Magento_Catalog. Potremmo avere più dipendenze. In questo caso, inseriremmo i nodi <module name=..” /> sotto il nodo della sequenza.

Passaggio 3: crea il file registration.php

Ogni modulo deve avere questo file, che dice a Magento come individuare il modulo. Continuando il nostro esempio, crea il file app/code/Learning/FirstUnit/registration.php . Quindi inserisci il seguente contenuto:

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

Registration.php è un file standardizzato che segue lo stesso schema per tutti i moduli.

L'unica cosa che varia è il nome del modulo, che nel nostro caso è Learning_FirstUnit .

Passaggio 4: eseguire il comando "setup:upgrade".

L'esecuzione di questo comando rende attivo il tuo nuovo modulo, notificando a Magento la sua presenza.

 php bin/configurazione magento: aggiornamento

Dovrebbe fare eco a una grande quantità di output, una riga della quale dovrebbe essere Learning_FirstUnit . Verifica che questa riga di codice sia presente.

Passaggio 5: verificare che il nuovo modulo sia attivo

Finora, non abbiamo aggiunto alcun codice utile al nostro modulo: è ancora vuoto (e quindi invisibile). Per verificare che sia stato riconosciuto, controlla il file app/etc/config.php . Ha un elenco di moduli generati automaticamente che sono attivi.

Non modificare mai questa lista manualmente!

 app gatto/etc/env.php | grep Learning_FirstUnit

Utilizzando questi passaggi, puoi creare con successo un nuovo modulo in Magento 2.


Leggi di più:
Come distribuire contenuto statico in Magento 2