Cómo crear un módulo simple en magento 2

8

Soy nuevo en magento2.

Quiero crear un simple módulo Hello World en magento 2.

¿Cómo crear este módulo?

Saravanan DS
fuente
2
Me parece que alguien no puede usar un motor de búsqueda o es demasiado vago para hacerlo.
Julien Lachal

Respuestas:

8

Bueno, esta es una pregunta amplia, pero mi mejor consejo sería verificar las muestras oficiales de Magento 2.

Puede encontrarlos aquí: https://github.com/magento/magento2-samples

Este proyecto es una colección de muestras para demostrar tecnologías introducidas en Magento 2. Encontrará la extensión más simple junto con muestras que agregan funciones de manera incremental para guiarlo a través de una exploración y educación de la plataforma Magento 2.

Además de eso, puede encontrar muchos tutoriales si busca "magento 2 create module" en Google

Raphael en Digital Pianism
fuente
10

Pongamos nombre al módulo StackExchange_HelloWorld.
Necesitará estos archivos:

app/code/StackExchange/HelloWorld/registration.php - el archivo de registro

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

app/code/StackExchange/HelloWorld/etc/module.xml - el archivo de declaración del módulo

<?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 - el archivo de enrutamiento 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 - el controlador de índice

<?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 - el archivo de diseño

<?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 - la plantilla para el bloque

 <h2>Hello World</h2>

después de que haya terminado, ejecute esto en la consola

Configuración de php bin / magento: actualización

Debería poder ver el resultado en la URL [ROOT]/helloworld

Marius
fuente
Gracias @ Mario. He intentado esto No está trabajando. Muestra error 404.
Saravanan DS
¿está habilitado su módulo? ¿Aparece en sistema-> configuración?
Marius
si. habilitado y mostrando en el sistema-> configuración.
Saravanan DS
OKAY. Intentaré nuevamente y editaré la respuesta si es necesario.
Marius
1
Creo que encontré el problema. El routes.xmlarchivo debe colocarse en app/code/StackExchange/HelloWorld/etc/frontendno en app/code/StackExchange/HelloWorld/frontend. Había un etcdesaparecido. Y olvidé 2 usecláusulas en el archivo del controlador. Ver mi respuesta de actualización.
Marius
1

También probé ayer y logré crear mi propio módulo hello world magento 2. Seguí este tutorial para crear un módulo Magento 2 simple , hay 6 pasos a continuación

=> Paso 1: Crear carpeta del módulo:

aplicación / código / Magentoexplorer / Helloworld

=> Paso 2: Agregue module.xml para borrar el módulo

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

=> Paso 3: Crear registro.php para registrar el módulo

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

=> Paso 4: Cómo instalar, habilitar o deshabilitar / eliminar el módulo

cd [magento_directory]
php bin/magento setup:upgrade

=> Paso 5: Ruta del módulo. crearapp/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>

=> Paso 6: Controlador y acción.

aplicación / código / 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
fuente
0

El módulo más simple es bastante fácil:

  • Dentro de app/codecrear su carpeta para proveedor y módulo. Es decirapp/code/MyCompany/FirstModule
  • Dentro de la FirstModulecarpeta agregue unregistration.php

    DIR);

  • Dentro de la misma carpeta, cree una etccarpeta, comoapp/code/MyCompany/FirstModule/etc

  • En la etccarpeta crea unmodule.xml

Y voilá. Eso es. Ahora puede activar su módulo a través de SSH con el bin/magento module:enable MyCompany_FirstModulecomando.

Alex Timmer
fuente
0

Para crear un módulo en Magento 2, se requieren los siguientes pasos:

  1. Crea directorios.
  2. Configuración del módulo
  3. Registro de Módulo
  4. Archivo de enrutador front-end
  5. Crear controlador
  6. Crear bloque
  7. Archivo de diseño frontend
  8. Archivo de plantilla de interfaz
  9. Módulo de Activación
Syed Muneeb Ul Hasan
fuente
0

Para crear el módulo Hello World en Magento 2.

Para mejor uso PHP Storm

Para crear el módulo Hello World, debe completar los siguientes pasos de alto nivel:

Mejores prácticas Use PHP Storm

Paso 1: crea la carpeta del módulo Hello World

Paso 2: crea el módulo

Paso 3: registre el módulo creado

Paso 4: habilite el módulo

Paso 1: Crear carpeta de HelloWorld

El nombre del módulo se define como "VendorName_ModuleName". La primera parte es el nombre del proveedor y la última parte es el nombre del módulo: Por ejemplo: Sathya_HelloWorld.

##### crear directorio de archivos como

Magento2/app/code/Sathya/HelloWorld

Paso 2: Crear módulo

es necesario crear una carpeta etc. y agregar el archivo module.xml
app/code/Sathya/HelloWorld/etc/module.xml

Los contenidos serían:

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

Paso 3: registre el módulo creado

Crear archivo Registration.php

 app/code/Sathya/HelloWorld/registration.php

Los contenidos serían:

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

Paso 4: habilite el módulo

Antes de habilitar el Módulo, asegúrese de que el Módulo esté creado o no. Para eso, ejecute el comando desde el directorio raíz de Magento como.

 php bin/magento module:status

Enumera todos los módulos deshabilitados

###### Sathya_HelloWorld

Para habilitar el Módulo, ejecute el comando como:

 php bin/magento module:enable Sathya_HelloWorld
También hay otra forma de habilitarlo. Lo cual se explicará más adelante.

Actualice su base de datos: ejecute "bin / magento setup: upgrade" desde el directorio raíz de Magento.

Deje ejecutar el comando:

  php bin/magento setup:upgrade

Por favor, corre

  php bin/magento setup:static-content:deploy

Luego ejecuta (opcional)

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

Para agregar la ruta, es necesario crear el archivo routes.xml

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

El contenido sería:

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

El directorio y el archivo que necesita crear es:

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

Los contenidos serían:

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

Una vez completado, ejecute el comando para borrar el caché

php bin/magento c:f

Verifique su Módulo ingresando URL ahora debe ser como:

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