28 January, 2023

Create Simple Module in Magento 2

Create Magento2 Module

It’s time to learn what’s new about Magento 2.

In this article, I will share my knowledge on Custom module creation in Magento 2.

Step 1 :

To initiate the module you have to create a file called, module.xml under the directory: app/code/<Namespace>/<Modulename>/etc/module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="<Namespace_Modulename>" setup_version="1.0.0">

In this file, Namespace, Custom Module name and the module version has to be mentioned.

Read: Creating Custom Attribute Set in Magento 2 via UpgradeData.php

Step 2 :

After that initiates, the module needs to be registered. In case you’re using a system built on the official Magento 2.0 release, then there’s one more thing that needs to be taken care of. In addition to the files mentioned above, every module also needs a registration.php file which looks like this:

In , app/code/<Namespace>/<Modulename>/registration.php

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

Step 3 :

To activate the Module, edit the config.php under app/etc

In the file add module with the array module.

Ex : ‘Namespace_Module’ => 1,

array (
‘Namespace_Module’ => 1, // Add like this
'Magento_Store' => 1,
'Magento_AdvancedPricingImportExport' => 1,
'Magento_Directory' => 1,
'Magento_Theme' => 1,
'Magento_Backend' => 1, ………

Step 4 :

Next, create a Controller action for the module.

To do that, create a php file in the directory: app/code/<Namespace>/<Modulename>/Controller/<Controllername>/<Actionname>.php

Ex : app/code/<Namespace>/<Modulename>/Controller/Index/Index.php

namespace <Namespace>\<Modulename>\Controller\Index;
class Index extends \Magento\Framework\App\Action\Action
	public function execute()

→ Folder Index pointing the Controller name and
→ Index.php pointing Action name.

Step 5 :

Let’s Create a simple Block file for our Module in

Under Add code as below

namespace <Namespace>\<Modulename>\Block;
class <Blockname> extends \Magento\Framework\View\Element\Template
public function _prepareLayout()
return parent::_prepareLayout();

Step 6 :

After Block, create a routes.xml file to configure
Add routes.xml under,

And the code inside the file (routes.xml)

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd">
    <router id="standard">
        <route id="<module>" frontName="<module>">
            <module name="<Namespace_Module>" />

Step 7 :

Now a Template file needs to be created, in the directory:

Add the following content in that phtml file,

Thanks for reading Apptha Blog

Success ...!!!

Step 8 :

At last to complete the creation of our Module, we need to create a layout file under,

Add the following content in that file,

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
        <title>Welcome ...</title>
        <referenceContainer name="content">
            <block name="<blockname>" template="<filename>.phtml"></block>

That’s it.. All Done..!
Run your module, in browser as,
To verify your module, go to terminal and run the following commands.
$ cd [your/magento/project/folder/path]
$ bin/magento setup:upgrade

This will list all the modules list in your Magento 2.

Shajitha Banu works as an application developer at Apptha. Coding is her passion and she loves new challenges.


  1. Vijay Reply


    It’s little strange you guys don’t have a contact number, email me your contact number, would like to talk you guys


Leave a Reply

Your email address will not be published. Required fields are marked *