Comment créer un module simple dans magento 2

8

Je suis nouveau sur magento2.

Je veux créer un module Hello World simple dans magento 2.

Comment créer ce module?

Saravanan DS
la source
2
Cela me semble que quelqu'un ne peut pas utiliser un moteur de recherche ou est trop paresseux pour le faire.
Julien Lachal

Réponses:

8

Eh bien, c'est une question générale, mais mon meilleur conseil serait de vérifier les échantillons officiels de Magento 2.

Vous pouvez les trouver ici: https://github.com/magento/magento2-samples

Ce projet est une collection d'exemples pour démontrer les technologies introduites dans Magento 2. Vous trouverez l'extension la plus simple ainsi que des exemples qui ajoutent progressivement des fonctionnalités pour vous guider à travers une exploration et une éducation de la plate-forme Magento 2.

En plus de cela, vous pouvez trouver de nombreux tutoriels si vous recherchez "module de création magento 2" dans Google

Raphael chez Digital Pianism
la source
10

Nommons le module StackExchange_HelloWorld.
vous aurez besoin de ces fichiers:

app/code/StackExchange/HelloWorld/registration.php - le dossier d'inscription

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

app/code/StackExchange/HelloWorld/etc/module.xml - le fichier de déclaration du module

<?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 - le fichier de routage frontal

<?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 - le contrôleur d'index

<?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 - le fichier de mise en page

<?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 - le modèle du bloc

 <h2>Hello World</h2>

une fois que vous avez terminé, exécutez-le dans la console

configuration de php bin / magento: mise à niveau

Vous devriez pouvoir voir le résultat à l'url [ROOT]/helloworld

Marius
la source
Merci @Marius. J'ai essayé ça. Ça ne marche pas. Affiche une erreur 404.
Saravanan DS
votre module est-il activé? Apparaît-il dans la configuration système>?
Marius
Oui. activé et affiché dans le système-> configuration.
Saravanan DS
D'ACCORD. je vais réessayer et modifier la réponse si nécessaire.
Marius
1
Je pense avoir trouvé le problème. Le routes.xmlfichier doit être placé dans app/code/StackExchange/HelloWorld/etc/frontendpas dans app/code/StackExchange/HelloWorld/frontend. Il etcmanquait un . Et j'ai oublié 2 useclauses dans le fichier contrôleur. Voir ma réponse de mise à jour.
Marius
1

J'ai également essayé hier et réussi à créer mon propre module Hello World Magento 2. J'ai suivi ce tutoriel pour créer un simple module Magento 2 , il y a 6 étapes comme ci-dessous

=> Étape 1: créer le dossier du module:

application / code / Magentoexplorer / Helloworld

=> Étape 2: ajoutez module.xml pour déclear le module

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

=> Étape 3: Créez registration.php pour enregistrer le module

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

=> Étape 4: Comment installer, activer ou désactiver / supprimer le module

cd [magento_directory]
php bin/magento setup:upgrade

=> Étape 5: Itinéraire du module. créerapp/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>

=> Étape 6: Contrôleur et action.

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;
  }
}
Brian
la source
0

Le module le plus nu est assez simple:

  • À l'intérieur, app/codecréez votre dossier pour le fournisseur et le module. C'est à direapp/code/MyCompany/FirstModule
  • Dans le FirstModuledossier, ajoutez unregistration.php

    DIR);

  • Dans le même dossier, créez un etcdossier, commeapp/code/MyCompany/FirstModule/etc

  • Dans le etcdossier, créez unmodule.xml

Et le tour est joué. C'est ça. Vous pouvez maintenant activer votre module via SSH avec la bin/magento module:enable MyCompany_FirstModulecommande.

Alex Timmer
la source
0

Pour créer un module dans Magento 2, les étapes suivantes sont requises:

  1. Créez des répertoires.
  2. Configuration du module
  3. Enregistrement du module
  4. Fichier de routeur frontal
  5. Créer un contrôleur
  6. Créer un bloc
  7. Fichier de mise en page frontend
  8. Fichier de modèle frontal
  9. Activation du module
Syed Muneeb Ul Hasan
la source
0

Pour créer le module Hello World dans Magento 2.

Pour une meilleure utilisation PHP Storm

Pour créer le module Hello World, vous devez effectuer les étapes de haut niveau suivantes:

Meilleures pratiques Utilisez PHP Storm

Étape 1: créer le dossier du module Hello World

Étape 2: créer un module

Étape 3: enregistrer le module créé

Étape 4: activer le module

Étape 1: créer un dossier de HelloWorld

Le nom du module est défini comme «VendorName_ModuleName». La première partie est le nom du fournisseur et la dernière partie est le nom du module: Par exemple: Sathya_HelloWorld.

##### créer un répertoire de fichiers en tant que

Magento2/app/code/Sathya/HelloWorld

Étape 2: créer un module

il est nécessaire de créer le dossier etc et d'ajouter le fichier module.xml
app/code/Sathya/HelloWorld/etc/module.xml

Le contenu serait:

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

Étape 3: enregistrer le module créé

Créer un fichier Registration.php

 app/code/Sathya/HelloWorld/registration.php

Le contenu serait:

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

Étape 4: activer le module

Avant d'activer le module, assurez-vous que le module est créé ou non. Pour cela, exécutez la commande à partir du répertoire racine de Magento en tant que.

 php bin/magento module:status

Il répertorie tous les modules désactivés

###### Sathya_HelloWorld

Pour activer le module, exécutez la commande en tant que:

 php bin/magento module:enable Sathya_HelloWorld
Il existe également une autre façon de l'activer. Ce qui sera expliqué plus tard.

Veuillez mettre à niveau votre base de données: Exécutez «bin / magento setup: upgrade» à partir du répertoire racine de Magento.

Exécutons la commande:

  php bin/magento setup:upgrade

Veuillez exécuter

  php bin/magento setup:static-content:deploy

Puis exécutez (facultatif)

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

Pour ajouter une route, il est nécessaire de créer un fichier routes.xml

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

Le contenu serait:

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

Le répertoire et le fichier que vous devez créer sont:

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

Le contenu serait:

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

Une fois terminé, veuillez exécuter la commande pour vider le cache

php bin/magento c:f

Vérifiez votre module en entrant l'URL maintenant devrait être comme:

 http://< YourDomain.com >/helloworld/index/test
Sathya
la source