Cookies setting

Cookies help us enhance your experience on our site by storing information about your preferences and interactions. You can customize your cookie settings by choosing which cookies to allow. Please note that disabling certain cookies might impact the functionality and features of our services, such as personalized content and suggestions. Cookie Policy

Cookie Policy
Essential cookies

These cookies are strictly necessary for the site to work and may not be disabled.

Information
Always enabled
Advertising cookies

Advertising cookies deliver ads relevant to your interests, limit ad frequency, and measure ad effectiveness.

Information
Analytics cookies

Analytics cookies collect information and report website usage statistics without personally identifying individual visitors to Google.

Information
mageplaza.com

How to Create Module in Magento 2 - Helloworld development series - Completed Guide

Vinh Jacker | 12-18-2024

How to Create Module in Magento 2

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

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.

magento 2 broken upgrade

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

x
    Jacker

    With over a decade of experience crafting innovative tech solutions for ecommerce businesses built on Magento, Jacker is the mastermind behind our secure and well-functioned extensions. With his expertise in building user-friendly interfaces and robust back-end systems, Mageplaza was able to deliver exceptional Magento solutions and services for over 122K+ customers around the world.



    Related Post

    Website Support
    & Maintenance Services

    Make sure your store is not only in good shape but also thriving with a professional team yet at an affordable price.

    Get Started
    mageplaza services