Hello World no Magento 2: Como fazer
Desenvolvimento, Magento 2
Publicado em 21 de fevereiro de 2022
Começar a desenvolver para Magento 2 é um tanto desafiador. Neste rápido artigo vamos ver como criar um simples “Hello World” em uma nova URL. Este costuma ser o passo inicial para qualquer pessoa iniciando no desenvolvimento para Magento ou outro framework.
O que você vai precisar
Para seguir este passo a passo você deve ter o Magento instalado e permissão de escrita a seus diretórios e arquivos.
Você também precisará de acesso SSH ou de acesso ao terminal local para executar os comandos do executável bin/magento. Certifique-se também que ele tem permissão de execução (chmod +x bin/magento ).
Aviso para não programadores
Se você não é um(a) programador(a) e escolheu o Magento como plataforma, recomendo que busque ajuda profissional para suas necessidades técnicas.
Magento é uma excelente solução de e-commerce, e muito bem construído. Ele foi concebido de forma que outros desenvolvedores possam criar módulos e componentes sob ele. No entanto, sua arquitetura não foi construída para ser entendida por não-desenvolvedores.
Criando um módulo
Eu já escrevi aqui no Magenteiro sobre como criar um módulo base para Magento 2. Neste artigo vamos um pouco além e criaremos uma página com nosso “Hello World”. Esse assunto também é abordado no meu curso sobre criação de módulos e componentes para Magento 2 (e claro, com muito mais detalhes e de forma mais prática).
Todas as melhorias e customizações para Magento são feitas através de módulos. Portanto, a primeira coisa que você precisa fazer para criar um módulo é criar um arquivo XML em app/code/<Vendor>/<Module>/etc.
<?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="Magenteiro_HelloWorld" setup_version="1.0.0"/>
</config>
O nome da pasta que vai em app/code geralmente é o nome do fornecedor ou empresa que fez o módulo. Também chamada de Vendor (fornecedor, em Inglês). No nosso exemplo, chamamos esta pasta de Magenteiro.
Abaixo dela, temos o nome do nosso módulo. No nosso exemplo, o chamamos de HelloWorld.
Desta forma, o nome do nosso módulo passa a ser Magenteiro_HelloWorld, localizado em app/code/Magenteiro/HelloWorld.
Uma pasta acima, criaremos um arquivo chamado registration.php.
<?php
declare(strict_types=1);
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'Magenteiro_HelloWorld',
__DIR__
);
Por fim, na mesma pasta criaremos um arquivo chamado composer.json.
{
"name": "Magenteiro_HelloWorld",
"description": "Um simples Hello World para os Magenteiros",
"require": {
"php": "*",
"magento/framework": "ˆ2.0",
"magento/module-integration": "ˆ2.0"
},
"type": "magento2-module",
"version": "1.0",
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
"Magenteiro\\HelloWorld\\": ""
}
}
}
Com os arquivos acima criados, já podemos ativar nosso módulo.
Para isso, basta ir ao terminal e digitar bin/magento setup:upgrade.
Criando um controller
Para criar um controller que responderá à alguma ação precisaremos inicialmente de dois arquivos:
- /etc/frontend/routes.xml
- /Controller/Index/Index.php
Nosso texto “Hello World” será exibido em /helloworld. Vamos ver como ficaria. Clique em cada um dos arquivos abaixo para ver seu conteúdo.
<?php
declare(strict_types=1);
namespace Magenteiro\HelloWorld\Controller\Index;
use Magento\Framework\App\Action\HttpGetActionInterface;
use Magento\Framework\Controller\ResultFactory;
class Index implements HttpGetActionInterface
{
private ResultFactory $resultFactory;
public function __construct(ResultFactory $resultFactory)
{
$this->resultFactory = $resultFactory;
}
public function execute()
{
$text = 'Hello World';
$response = $this->resultFactory->create(ResultFactory::TYPE_RAW);
$response->setContents($text);
return $response;
}
}
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="standard">
<route id="minharota" frontName="helloworld">
<module name="Magenteiro_HelloWorld"/>
</route>
</router>
</config>
Note que o frontName corresponde à primeira parte do futuro URL da minha loja. No nosso caso, https://www.minhaloja.com.br/helloworld. Note também que o N é escrito em caixa alta.
Ao acessar a nossa URL teremos nosso primeiro Hello World.

Outros formatos
Também podemos devolver um JSON, ou mesmo outros tipos de resposta. Para isso, basicamente precisamos modificar o valor da constante do parâmetro passado para resultFactory::create.
Veja um exemplo de retorno em JSON:
public function execute()
{
$text = 'Hello World';
$response = $this->resultFactory->create(ResultFactory::TYPE_JSON);
$response->setData(['hello'=>'magenteiro']);
return $response;
}
Desta forma teremos uma resposta como {"hello":"magenteiro"} e os cabeçalhos JSON passados de acordo.
Aplicando um Layout XML
O assunto layout XML é extenso e não caberia nesse artigo. Ele é abordado aqui no blog e também no Magento 2: O Curso em mais detalhes.
No entanto, apenas para fins de concluirmos este tutorial, vamos usar instruções de XML para carregar o layout de nossa loja junto com nosso “Hello World”.
A primeira coisa que faremos é modificar o nosso Controller, para que uma página/layout seja renderizado.
<?php
declare(strict_types=1);
namespace Magenteiro\HelloWorld\Controller\Index;
use Magento\Framework\App\Action\HttpGetActionInterface;
use Magento\Framework\View\Result\PageFactory;
class Index implements HttpGetActionInterface
{
private PageFactory $pageFactory;
public function __construct(PageFactory $pageFactory)
{
$this->pageFactory = $pageFactory;
}
public function execute()
{
$response = $this->pageFactory->create();
return $response;
}
}
E agora criaremos um novo arquivo XML.
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\Text" name="hello.world">
<action method="setText">
<argument name="text" xsi:type="string">Hello World</argument>
</action>
</block>
</referenceContainer>
</body>
</page>
Confuso? Vou explicar os principais pontos.
O arquivo deve se chamar minharota_index_index.xml pois o id da rota que definimos no routes.xml era minharota.
Na linha 2 do arquivo defino que quero que o Magento carregue o layout de 1 coluna. Ou seja, não teremos barras ou menus laterais.
Para escrever “Hello World”, eu poderia criar uma classe de bloco PHP e associar um template phtml à ela. Depois inserir esse bloco no XML dentro de “content”.
Ao invés disso, como trata-se apenas de um texto, preferi usar o bloco de texto nativo do Magento. Ele é declarado em Magento\Framework\View\Element\Text e referenciei ele na linha 5. Em seguida, chamei o método setText deste bloco e passei “Hello World” como argumento.
Isso pode ser feito com qualquer classe de bloco do Magento. Através de injeção de dependências também podemos alterar e injetar parâmetros nos construtores destas classes a fim de modificar seus comportamentos. Tudo isso diretamente nos arquivos XML.
Bacana não é mesmo? O Magento é realmente muito flexível.
Veja o resultado na minha loja:

No meu exemplo, estou usando a FireStore, disponível no curso gratuito Instalando e Configurando uma loja Magento 2 para o Brasil.
Baixe o módulo
Se desejar baixar o módulo de exemplo que fizemos, informe seu nome e e-mail no form abaixo.
Relacionados a este artigo (você pode gostar)
- Série sobre Controllers no Magento 2
- Vários artigos sobre Layout XML (Magento 1.x e 2.x)
- Curso de criação de módulos e componentes para Magento 2 em Português
- Criando Layout XML, Block e Template no Magento 2
- Guest checkout bloqueado na API REST do Magento 2? Confira isso. - 7 de julho de 2026
- Você precisa testar esta plataforma de e-commerce - 9 de fevereiro de 2026
- A hora de montar o seu OnlyFans chegou! Veja 8 ideias pra começar o seu. - 4 de dezembro de 2024
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-2/desenvolvimento-m2/hello-world-magento-2/"]