So erstellen Sie ein einfaches Modul in Magento 2


8

Ich bin neu bei magento2.

Ich möchte ein einfaches Hello World-Modul in Magento 2 erstellen.

Wie erstelle ich dieses Modul?


2
Klingt für mich so, als ob jemand keine Suchmaschine benutzen kann oder zu faul ist, dies zu tun.
Julien Lachal

Antworten:


8

Nun, das ist eine breite Frage, aber mein bester Rat wäre, die offiziellen Magento 2-Beispiele zu überprüfen.

Sie finden sie hier: https://github.com/magento/magento2-samples

Dieses Projekt ist eine Sammlung von Beispielen zur Demonstration der in Magento 2 eingeführten Technologien. Sie finden die einfachste Erweiterung zusammen mit Beispielen, die schrittweise Funktionen hinzufügen, um Sie durch die Erkundung und Schulung der Magento 2-Plattform zu führen.

Darüber hinaus finden Sie viele Tutorials, wenn Sie in Google nach "magento 2 create module" suchen


10

Nennen wir das Modul StackExchange_HelloWorld.
Sie benötigen diese Dateien:

app/code/StackExchange/HelloWorld/registration.php - die Registrierungsdatei

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

app/code/StackExchange/HelloWorld/etc/module.xml - die Moduldeklarationsdatei

<?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 - die Frontend-Routing-Datei

<?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 - der Indexregler

<?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 - die Layoutdatei

<?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 - die Vorlage für den Block

 <h2>Hello World</h2>

Nachdem Sie fertig sind, führen Sie dies in der Konsole aus

PHP Bin / Magento Setup: Upgrade

Sie sollten das Ergebnis unter der URL sehen können [ROOT]/helloworld


Danke @Marius. Ich habe es versucht. Es funktioniert nicht. Zeigt 404 Fehler an.
Saravanan DS

Ist Ihr Modul aktiviert? Erscheint es in System-> Konfiguration?
Marius

Ja. aktiviert und in System-> Konfiguration angezeigt.
Saravanan DS

OK. Ich werde es erneut versuchen und die Antwort bei Bedarf bearbeiten.
Marius

1
Ich glaube, ich habe das Problem gefunden. Die routes.xmlDatei sollte in app/code/StackExchange/HelloWorld/etc/frontendnicht in platziert werden app/code/StackExchange/HelloWorld/frontend. Es wurde ein etcvermisst. Und ich habe 2 useKlauseln in der Controller-Datei vergessen . Siehe meine Update-Antwort.
Marius

1

Ich habe es gestern auch gerade versucht und es ist mir gelungen, mein eigenes Hallo-Welt-Magento-2-Modul zu erstellen. Ich habe dieses Tutorial befolgt , um ein einfaches Magento 2-Modul zu erstellen. Es gibt 6 Schritte wie folgt

=> Schritt 1: Modulordner erstellen:

App / Code / Magentoexplorer / Helloworld

=> Schritt 2: Fügen Sie module.xml hinzu, um das Modul zu deklarieren

    <?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>

=> Schritt 3: Erstellen Sie die Datei register.php, um das Modul zu registrieren

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

=> Schritt 4: Installieren, Aktivieren oder Deaktivieren / Entfernen des Moduls

cd [magento_directory]
php bin/magento setup:upgrade

=> Schritt 5: Route des Moduls. erstellenapp/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>

=> Schritt 6: Controller und Aktion.

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

Das einfachste Modul ist einfach genug:

  • app/codeErstellen Sie im Inneren Ihren Ordner für Anbieter und Modul. Dhapp/code/MyCompany/FirstModule
  • Fügen Sie im FirstModuleOrdner a hinzuregistration.php

    DIR);

  • Erstellen Sie im selben Ordner einen etcOrdner wieapp/code/MyCompany/FirstModule/etc

  • Im etcOrdner erstellen Sie einemodule.xml

Und voila. Das ist es. Sie können Ihr Modul jetzt über SSH mit dem bin/magento module:enable MyCompany_FirstModuleBefehl aktivieren .



0

Um ein Modul in Magento 2 zu erstellen, sind folgende Schritte erforderlich:

  1. Verzeichnisse erstellen.
  2. Konfiguration des Moduls
  3. Registrierung des Moduls
  4. Front-End-Router-Datei
  5. Controller erstellen
  6. Block erstellen
  7. Frontend-Layoutdatei
  8. Frontend-Vorlagendatei
  9. Modulaktivierung

0

So erstellen Sie das Hello World-Modul in Magento 2.

Für die beste Verwendung PHP Storm

Um das Hello World-Modul zu erstellen, müssen Sie die folgenden allgemeinen Schritte ausführen:

Best Practice Verwenden Sie PHP Storm

Schritt 1: Erstellen Sie den Ordner des Hello World-Moduls

Schritt 2: Modul erstellen

Schritt 3: Registrieren Sie das erstellte Modul

Schritt 4: Aktivieren Sie das Modul

Schritt 1: Erstellen Sie einen Ordner von HelloWorld

Der Name des Moduls ist als "VendorName_ModuleName" definiert. Der erste Teil ist der Name des Anbieters und der letzte Teil ist der Name des Moduls: Zum Beispiel: Sathya_HelloWorld.

##### Dateiverzeichnis erstellen als

Magento2/app/code/Sathya/HelloWorld

Schritt 2: Modul erstellen

Es ist erforderlich, den Ordner etc zu erstellen und die Datei module.xml hinzuzufügen
app/code/Sathya/HelloWorld/etc/module.xml

Inhalt wäre:

<?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>

Schritt 3: Registrieren Sie das erstellte Modul

Erstellen Sie die Datei Registration.php

 app/code/Sathya/HelloWorld/registration.php

Inhalt wäre:

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

Schritt 4: Aktivieren Sie das Modul

Stellen Sie vor dem Aktivieren des Moduls sicher, ob das Modul erstellt wurde oder nicht. Führen Sie dazu den Befehl aus dem Magento-Stammverzeichnis als aus.

 php bin/magento module:status

Es werden alle deaktivierten Module aufgelistet

###### Sathya_HelloWorld

Um das Modul zu aktivieren, führen Sie den folgenden Befehl aus:

 php bin/magento module:enable Sathya_HelloWorld
Es gibt auch eine andere Möglichkeit, dies zu aktivieren. Was später erklärt wird.

Bitte aktualisieren Sie Ihre Datenbank: Führen Sie "bin / magento setup: upgrade" aus dem Magento-Stammverzeichnis aus.

Lassen Sie den Befehl ausführen:

  php bin/magento setup:upgrade

Bitte renne

  php bin/magento setup:static-content:deploy

Dann ausführen (optional)

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

Um eine Route hinzuzufügen, muss die Datei route.xml erstellt werden

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

Inhalt wäre:

<?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>

Das Verzeichnis und die Datei, die Sie erstellen müssen, sind:

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

Inhalt wäre:

<?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;
    }
}

Führen Sie anschließend den Befehl aus, um den Cache zu löschen

php bin/magento c:f

Überprüfen Sie Ihr Modul, indem Sie jetzt die URL eingeben:

 http://< YourDomain.com >/helloworld/index/test
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.