Come creare un modulo semplice in Magento 2


8

Sono nuovo di magento2.

Voglio creare un semplice modulo Hello World in magento 2.

Come creare questo modulo?


2
Mi sembra che qualcuno non possa usare un motore di ricerca o sia troppo pigro per farlo.
Julien Lachal,

Risposte:


8

Bene, questa è una domanda ampia, ma il mio miglior consiglio sarebbe di controllare i campioni ufficiali di Magento 2.

Puoi trovarli qui: https://github.com/magento/magento2-samples

Questo progetto è una raccolta di esempi per dimostrare le tecnologie introdotte in Magento 2. Troverai l'estensione più semplice insieme a esempi che aggiungono in modo incrementale funzionalità per guidarti attraverso l'esplorazione e l'educazione della piattaforma Magento 2.

Inoltre puoi trovare molti tutorial se cerchi "magento 2 create module" su Google


10

Diamo un nome al modulo StackExchange_HelloWorld.
avrai bisogno di questi file:

app/code/StackExchange/HelloWorld/registration.php - il file di registrazione

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

app/code/StackExchange/HelloWorld/etc/module.xml - il file di dichiarazione del modulo

<?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="StackExchange_HelloWorld" setup_version="2.0.0" />
</config>

app/code/StackExchange/HelloWorld/etc/frontend/routes.xml - il file di routing frontend

<?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 id="helloworld" frontName="helloworld">
            <module name="StackExchange_HelloWorld" />
        </route>
    </router>
</config>

app/code/StackExchange/HelloWorld/Controller/Index/Index.php - il controller dell'indice

<?php 
namespace StackExchange\HelloWorld\Controller\Index;

use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;

class Index extends \Magento\Framework\App\Action\Action
{
     protected $resultPageFactory;
     public function __construct(
        Context $context,
        PageFactory $resultPageFactory
    )
    {
        parent::__construct($context);
        $this->resultPageFactory = $resultPageFactory;
    }
    public function execute()
    {
         $resultPage = $this->resultPageFactory->create();
         $resultPage->getConfig()->getTitle()->set(__('Hello World'));
         return $resultPage;
    }
}

app/code/StackExchange/HelloWorld/view/frontend/layout/helloworld_index_index.xml - il file di layout

<?xml version="1.0"?>
<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <block class="Magento\Framework\View\Element\Template" template="StackExchange_HelloWorld::index.phtml" />
        </referenceContainer>
    </body>
</page>

app/code/StackExchange/HelloWorld/view/frontend/templates/index.phtml - il modello per il blocco

 <h2>Hello World</h2>

dopo aver terminato, eseguilo nella console

php bin / magento setup: upgrade

Dovresti essere in grado di vedere il risultato all'URL [ROOT]/helloworld


Grazie @ Mario. Ci ho provato Non funziona. Mostra errore 404.
Saravanan DS,

il tuo modulo è abilitato? Appare in configurazione di sistema>?
Marius

sì. abilitato e visualizzato in sistema-> configurazione.
Saravanan DS,

OK. proverò di nuovo e modificherò la risposta se necessario.
Marius

1
Penso di aver trovato il problema. Il routes.xmlfile deve essere inserito in app/code/StackExchange/HelloWorld/etc/frontendnon in app/code/StackExchange/HelloWorld/frontend. Mancava etc. E ho dimenticato 2 useclausole nel file del controller. Vedi la mia risposta di aggiornamento.
Marius

1

Ho anche provato ieri e sono riuscito a creare il mio modulo ciao world magento 2. Ho seguito questo tutorial per creare un semplice modulo Magento 2 , ci sono 6 passaggi come di seguito

=> Passaggio 1: crea la cartella del modulo:

app / code / Magentoexplorer / Helloworld

=> Passaggio 2: aggiungere module.xml per decannare il modulo

    <?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="Magentoexplorer_Helloworld" setup_version="1.0.0" />
</config>

=> Passaggio 3: creare registration.php per registrare il modulo

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Magentoexplorer_Helloworld',
    __DIR__
);

=> Passaggio 4: Come installare, abilitare o disabilitare / rimuovere il modulo

cd [magento_directory]
php bin/magento setup:upgrade

=> Passaggio 5: percorso del modulo. creareapp/code/Magentoexplorer/Helloworld/etc/frontend/routes.xml

<?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 id="magentoexplorer" frontName="helloworld">
            <module name="Magentoexplorer_Helloworld" />
        </route>
    </router>
</config>

=> Passaggio 6: controller e azione.

app / code / Magentoexplorer / Helloworld / Index / Index.php

<?php
namespace Magentoexplorer\Helloworld\Controller\Index;

class Display extends \Magento\Framework\App\Action\Action
{
  public function __construct(
\Magento\Framework\App\Action\Context $context)
  {
    return parent::__construct($context);
  }

  public function execute()
  {
    echo 'Hello World';
    exit;
  }
}


0

Il modulo più semplice è abbastanza semplice:

  • All'interno app/codecrea la tua cartella per il fornitore e il modulo. ieapp/code/MyCompany/FirstModule
  • All'interno della FirstModulecartella aggiungi aregistration.php

    DIR);

  • All'interno della stessa cartella, crea una etccartella, ad esempioapp/code/MyCompany/FirstModule/etc

  • Nella etccartella creare unmodule.xml

E voilà. Questo è tutto. Ora puoi attivare il tuo modulo tramite SSH con il bin/magento module:enable MyCompany_FirstModulecomando.



0

Per creare un modulo in Magento 2, sono richiesti i seguenti passaggi:

  1. Crea directory.
  2. Configurazione del modulo
  3. Registrazione del modulo
  4. File del router front-end
  5. Crea controller
  6. Crea blocco
  7. File layout front-end
  8. File modello frontend
  9. Attivazione del modulo

0

Per creare il modulo Hello World in Magento 2.

Per il miglior utilizzo PHP Storm

Per creare il modulo Hello World, devi completare i seguenti passaggi di alto livello:

Best practice Utilizzare PHP Storm

Passaggio 1: creare la cartella del modulo Hello World

Passaggio 2: creare un modulo

Passaggio 3: registrare il modulo creato

Passaggio 4: abilitare il modulo

Passaggio 1: creare la cartella di HelloWorld

Il nome del modulo è definito come "VendorName_ModuleName". La prima parte è il nome del fornitore e l'ultima parte è il nome del modulo: ad esempio: Sathya_HelloWorld.

##### crea la directory dei file come

Magento2/app/code/Sathya/HelloWorld

Passaggio 2: Crea modulo

è necessario creare la cartella etc e aggiungere il file module.xml
app/code/Sathya/HelloWorld/etc/module.xml

I contenuti sarebbero:

<?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="Sathya_HelloWorld" setup_version="1.0.0">
   </module>
</config>

Passaggio 3: registrare il modulo creato

Crea il file Registration.php

 app/code/Sathya/HelloWorld/registration.php

I contenuti sarebbero:

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

Passaggio 4: abilitare il modulo

Prima di abilitare il modulo, assicurarsi che il modulo sia stato creato o meno. Per questo eseguire il comando dalla directory principale di Magento come.

 php bin/magento module:status

Elenca tutti i moduli disabilitati

###### Sathya_HelloWorld

Per abilitare il modulo, eseguire il comando come:

 php bin/magento module:enable Sathya_HelloWorld
Inoltre c'è un altro modo per abilitarlo. Che sarà spiegato in seguito.

Aggiorna il tuo database: esegui "bin / magento setup: upgrade" dalla directory principale di Magento.

Esegui il comando:

  php bin/magento setup:upgrade

Per favore, corri

  php bin/magento setup:static-content:deploy

Quindi eseguire (facoltativo)

  php bin/magento setup:static-content:deploy -f

Per aggiungere route, è necessario creare il file route.xml

app/code/Sathya/HelloWorld/etc/frontend/routes.xml

Il contenuto sarebbe:

<?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="Sathya_HelloWorld"/>
        </route>
    </router>
</config>

La directory e il file che devi creare sono:

app/code/Sathya/HelloWorld/Controller/Index/Test.php

I contenuti sarebbero:

<?php
namespace Sathya\HelloWorld\Controller\Index;

class Test 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;
    }
}

Al termine, eseguire il comando per cancellare la cache

php bin/magento c:f

Controlla il tuo modulo inserendo l'URL ora dovrebbe essere come:

 http://< YourDomain.com >/helloworld/index/test
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.