How to Create Module in Magento 2 - Helloworld development series - Completed Guide
We will discuss the topic of how to create Hello World module in Magento 2 in order to help you have the clearest and easiest way to create now. Remember that the concept of local/ community/ core/ folders
only existed in Magento 1 and you will don’t use them for Magento 2.
To create Hello World module in Magento 2.
To create Hello World module, you need to complete the following high-level steps:
- Step 1: Create the folder of Hello World module
- Step 2: Create etc/module.xml file
- Step 3: Create etc/registration.php file
- Step 4: Enable the module
Step 1: Create the folder of Hello World module
Name of the module is defined as “VendorName_ModuleName”. First part is name of the vendor and last part is name of the module: For example: Magento_HelloWorld, Mageplaza_Pdf_Invoice, Mageplaza_One_step_checkout. Focus on following guide to create the folders:
app/code/Mageplaza/HelloWorld
Step 2: Create etc/module.xml file.
Then, it is necessary to create etc folder and add the module.xml
file
app/code/Mageplaza/HelloWorld/etc/module.xml
Contents would be:
<?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="Mageplaza_HelloWorld" setup_version="1.0.0">
</module>
</config>
Step 3: Create etc/registration.php file
In this step, we will add registration.php
as following guide:
app/code/Mageplaza/HelloWorld/registration.php
Contents would be:
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Mageplaza_HelloWorld',
__DIR__
);
Step 4: Enable the module
Finish the step 3, we have already created the HelloWorld
module. And we will enable this module in this step
After create the module if you run the command as:
php bin/magento module:status
You should see the module is disable now:
List of disabled modules:
Mageplaza_HelloWorld
Follow exact guide to enable the module right now, let run the command as:
php bin/magento module:enable Mageplaza_HelloWorld
Or other way, you can access the file:
app/etc/config.php
You will see a long list of modules there, just add your module as well
...
'Mageplaza_HelloWorld' => 1,
....
Your module should be available now.
After this step, when you open your website in browser you will get an error saying
Please upgrade your database: Run “bin/magento setup:upgrade” from the Magento root directory.
Let run the command:
php bin/magento setup:upgrade
After complete,when you open your website in browser you will see the layout of the website is broken.
Please run
php bin/magento setup:static-content:deploy
to fix this.
After deploy completed,you can also see your module from backend at System Configuration -> Advanced -> Disable Modules
Output.
Now, we will create a controller to test module.
Before create a controller, we will create a route for HelloWorld module.
Route’s in magento are divided into 3 parts: Route frontname, controller and action as following example:
http://mageplaza.com/index.php/frontname/controller/action
To add route, it is necessary to create routes.xml
file
app/code/Mageplaza/HelloWorld/etc/frontend/routes.xml
since this is a frontend route, we added it in frontend/ folder else we need to add it to adminhtml/ folder
Content would be:
<?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="Mageplaza_HelloWorld"/>
</route>
</router>
</config>
After define the first part of the route, the URL will be displayed as:
http://<yourhost.com>/helloworld/*
Then, We will continue the controller and action
The folder and file you need to create is:
app/code/Mageplaza/HelloWorld/Controller/Index/Test.php
Contents would be:
<?php
namespace Mageplaza\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;
}
}
After completed, please run php bin/magento cache:clean
to clear cache and check result.
Your URL now should be as:
http://<yourhost.com>/helloworld/index/test
After finish all steps, the output Hello World
should be displayed in your browser when you open the URL.
We hope our guide is very useful and effective for you.
Recommend
Enjoyed the tutorial? Spread it to your friends!
Jacker Ngo
Magento Developer who is passionate about development and love technology. Jacker’s story
Featured Extensions
People also searched for
- magento 2 hello world module
- create custom module in magento 2
- create module in magento 2
- magento 2 create module
- how to create custom module in magento 2
- magento 2 custom module
- how to create module in magento 2
- how to create module in magento 2 step by step
- hello world module in magento 2
- create new module in magento 2
- custom module magento 2
- create module magento 2
- create a module in magento 2
- hello world magento 2
- hello world module
- 2.2.x, 2.3.x, 2.4.x