Como criar um módulo simples no magento 2

8

Eu sou novo no magento2.

Quero criar um módulo simples Hello World no magento 2.

Como criar este módulo?

Saravanan DS
fonte
2
Parece-me que alguém não pode usar um mecanismo de pesquisa ou está com preguiça de fazê-lo.
Julien Lachal

Respostas:

8

Bem, essa é uma pergunta ampla, mas meu melhor conselho seria verificar as amostras oficiais do Magento 2.

Você pode encontrá-los aqui: https://github.com/magento/magento2-samples

Este projeto é uma coleção de amostras para demonstrar as tecnologias introduzidas no Magento 2. Você encontrará a extensão mais simples, juntamente com amostras que adicionam recursos de forma incremental para levá-lo através da exploração e educação da plataforma Magento 2.

Além disso, você pode encontrar muitos tutoriais se pesquisar "magento 2 create module" no Google

Raphael na Digital Pianism
fonte
10

Vamos nomear o módulo StackExchange_HelloWorld.
você precisará desses arquivos:

app/code/StackExchange/HelloWorld/registration.php - o arquivo de registro

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

app/code/StackExchange/HelloWorld/etc/module.xml - o arquivo de declaração do 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 - o arquivo de roteamento de front-end

<?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 - o 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 - o arquivo de 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 - o modelo para o bloco

 <h2>Hello World</h2>

depois de terminar, execute isso no console

php bin / magento setup: atualização

Você poderá ver o resultado no URL [ROOT]/helloworld

Marius
fonte
Obrigado @Marius. Eu tentei isso. Não está funcionando. Mostra erro 404.
Saravanan DS
seu módulo está ativado? Ele aparece em sistema-> configuração?
Marius
sim. ativado e exibido em sistema-> configuração.
Saravanan DS
ESTÁ BEM. vou tentar novamente e editar a resposta, se necessário.
Marius
11
Eu acho que encontrei o problema. O routes.xmlarquivo deve ser colocado em app/code/StackExchange/HelloWorld/etc/frontendnão dentro app/code/StackExchange/HelloWorld/frontend. Havia uma etcfalta. E eu esqueci duas usecláusulas no arquivo do controlador. Veja minha resposta de atualização.
Marius
1

Também tentei ontem e consegui criar meu próprio módulo hello world magento 2. Eu segui este tutorial para criar um módulo Magento 2 simples , existem 6 etapas abaixo

=> Etapa 1: Crie a pasta do módulo:

app / code / Magentoexplorer / Helloworld

=> Etapa 2: adicione module.xml para liberar o 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>

=> Etapa 3: Crie o registration.php para registrar o módulo

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

=> Etapa 4: Como instalar, ativar ou desativar / remover o módulo

cd [magento_directory]
php bin/magento setup:upgrade

=> Etapa 5: Rota do módulo. crioapp/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>

=> Etapa 6: Controlador e ação.

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
fonte
0

O módulo mais simples é fácil:

  • Dentro, app/codecrie sua pasta para Fornecedor e Módulo. Ou seja,app/code/MyCompany/FirstModule
  • Dentro da FirstModulepasta, adicione umregistration.php

    DIR);

  • Dentro da mesma pasta, crie uma etcpasta, comoapp/code/MyCompany/FirstModule/etc

  • Na etcpasta, crie ummodule.xml

E pronto. É isso aí. Agora você pode ativar seu módulo via SSH com o bin/magento module:enable MyCompany_FirstModulecomando

Alex Timmer
fonte
0

Para criar o módulo no Magento 2, são necessárias as seguintes etapas:

  1. Crie diretórios.
  2. Configuração do Módulo
  3. Registro do Módulo
  4. Arquivo do roteador front-end
  5. Criar Controlador
  6. Criar bloco
  7. Arquivo de layout de front-end
  8. Arquivo de modelo de front-end
  9. Ativação do módulo
Syed Muneeb Ul Hasan
fonte
0

Para criar o módulo Hello World no Magento 2.

Para melhor uso do PHP Storm

Para criar o módulo Hello World, é necessário concluir as seguintes etapas de alto nível:

Melhores práticas Use PHP Storm

Etapa 1: Crie a pasta do módulo Hello World

Etapa 2: criar módulo

Etapa 3: registrar o módulo criado

Etapa 4: ativar o módulo

Etapa 1: Criar pasta do HelloWorld

O nome do módulo é definido como "Nome_do_Modelo_do_Vendor". A primeira parte é o nome do fornecedor e a última parte é o nome do módulo: Por exemplo: Sathya_HelloWorld.

##### crie um diretório de arquivos como

Magento2/app/code/Sathya/HelloWorld

Etapa 2: Criar Módulo

é necessário criar a pasta etc e adicionar o arquivo module.xml
app/code/Sathya/HelloWorld/etc/module.xml

O conteúdo seria:

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

Etapa 3: registrar o módulo criado

Criar arquivo Registration.php

 app/code/Sathya/HelloWorld/registration.php

O conteúdo seria:

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

Etapa 4: ativar o módulo

Antes de ativar o Módulo, verifique se o Módulo foi criado ou não. Para isso, execute o comando no diretório raiz do Magento como.

 php bin/magento module:status

Lista todos os módulos desativados

###### Sathya_HelloWorld

Para habilitar o módulo, execute o comando como:

 php bin/magento module:enable Sathya_HelloWorld
Também há uma outra maneira de habilitá-lo. O que será explicado mais adiante.

Atualize seu banco de dados: Execute “bin / magento setup: upgrade” no diretório raiz do Magento.

Vamos executar o comando:

  php bin/magento setup:upgrade

Por favor corra

  php bin/magento setup:static-content:deploy

Em seguida, execute (opcional)

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

Para adicionar uma rota, é necessário criar o arquivo routes.xml

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

O conteúdo seria:

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

O diretório e o arquivo que você precisa criar são:

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

O conteúdo seria:

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

Depois de concluído, execute o comando para limpar o cache

php bin/magento c:f

Verifique seu módulo inserindo o URL agora deve ser o seguinte:

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