How to create simple module magento2

Home / Magento / How to create simple module magento2

Here we go to create your first or very simple module in magento2.
We are going to create module with Namespace is “Jwd” and Module Name is “WelcomeWorld”.

Step1: Create a module.xml file in app/code/Jwd/WelcomeWorld/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="Jwd_WelcomeWorld" setup_version="1.0.0">
    </module>
</config>

 

Step2: Create app/code/Jwd/WelcomeWorld/registration.php

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

 

Step3: Create a frontend router in app/code/Jwd/WelcomeWorld/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="welcomeworld" frontName="welcomeworld">
            <module name="Jwd_WelcomeWorld"/>
        </route>
    </router>
</config>

 

Step4: Create the file index.php for controller action in app/code/Jwd/WelcomeWorld/Controller/Index. This will map to http://127.0.0.1/magento2/welcomeworld/index/index

welcomeworld: front name
index: name of controller folder
index: name of action file – index.php

Each action is its own class extending \Magento\Framework\App\Action\Action. In every action file, there will be a method name excute() that will involked when the action is called

<?php
namespace Jwd\WelcomeWorld\Controller\Index; 

class Index extends \Magento\Framework\App\Action\Action {
    /** @var  \Magento\Framework\View\Result\Page */
    protected $resultPageFactory;
    /**      * @param \Magento\Framework\App\Action\Context $context      */
    public function __construct(\Magento\Framework\App\Action\Context $context,
        \Magento\Framework\View\Result\PageFactory $resultPageFactory)     {
        $this->resultPageFactory = $resultPageFactory;
        parent::__construct($context);
    }

    /**
	* @return \Magento\Framework\View\Result\PageFactory
     */
    public function execute()
    {
    	$resultPage = $this->resultPageFactory->create();
    	$resultPage->getConfig()->getTitle()->prepend(__('Jwd WelcomeWorld'));
    	return $resultPage;
    }
}
?>

 

Step5: Create a layout file in the following directory app\code\Jwd\WelcomeWorld\View\frontend\layout\helloworld_index_index.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="Jwd\WelcomeWorld\Block\WelcomeWorld" name="lofformbuilder-toplinks" template="Jwd_WelcomeWorld::welcomeworld.phtml"/>
  </referenceContainer>
 </body>
</page>

 

Step6: Create a block for our module. Create block file app/code/Jwd/WelcomeWorld/Block/WelcomeWorld.php

<?php
namespace Jwd\WelcomeWorld\Block;

class WelcomeWorld extends \Magento\Framework\View\Element\Template
{
	public function _prepareLayout()
	{
		return parent::_prepareLayout();
	}
}
?>

 

Step7: Create a template file app/code/Jwd/WelcomeWorld/View/frontend/templates/welcomeworld.phtml

Welcome to Magento 2

Step 8: Active Jwd_WelcomeWorld extension

We have two ways to active Ves_Helloworld extension
1. Directly edit file app/etc/config.xml: In the array module, add the element: ‘Jwd_WelcomeWorld’ => 1

<?php
return array (
  'modules' =>
  array (
    'Jwd_WelcomeWorld' => 1,
    'Magento_Store' => 1,
    'Magento_Directory' => 1,
    'Magento_Backend' => 1,
    'Magento_Backup' => 1,
    'Magento_Theme' => 1,
    'Magento_BundleImportExport' => 1,
    'Magento_CacheInvalidate' => 1,
    'Magento_Eav' => 1,
    'Magento_Customer' => 1,
    'Magento_CatalogImportExport' => 1,
    'Magento_Indexer' => 1,
    'Magento_Cms' => 1,
    'Magento_Search' => 1,
    'Magento_Catalog' => 1,
    'Magento_Rule' => 1,
    'Magento_CatalogInventory' => 1,
    'Magento_CheckoutAgreements' => 1,
    'Magento_Payment' => 1,
    'Magento_CmsUrlRewrite' => 1,
    'Magento_Config' => 1,
    'Magento_ConfigurableImportExport' => 1,
    'Magento_Msrp' => 1,
    'Magento_Contact' => 1,
    'Magento_Cookie' => 1,
    'Magento_Cron' => 1,
    'Magento_Widget' => 1,
    'Magento_Bundle' => 1,
    'Magento_CustomerImportExport' => 1,
    'Magento_DesignEditor' => 1,
    'Magento_Developer' => 1,
    'Magento_Dhl' => 1,
    'Magento_Authorization' => 1,
    'Magento_Downloadable' => 1,
    'Magento_Quote' => 1,
    'Magento_Email' => 1,
    'Magento_Fedex' => 1,
    'Magento_SalesSequence' => 1,
    'Magento_Sales' => 1,
    'Magento_GoogleAnalytics' => 1,
    'Magento_GoogleOptimizer' => 1,
    'Magento_GoogleShopping' => 1,
    'Magento_GroupedImportExport' => 1,
    'Magento_GroupedProduct' => 1,
    'Magento_ImportExport' => 1,
    'Magento_CatalogRule' => 1,
    'Magento_User' => 1,
    'Magento_LayeredNavigation' => 1,
    'Magento_Log' => 1,
    'Magento_MediaStorage' => 1,
    'Magento_Checkout' => 1,
    'Magento_Multishipping' => 1,
    'Magento_Newsletter' => 1,
    'Magento_OfflinePayments' => 1,
    'Magento_SalesRule' => 1,
    'Magento_PageCache' => 1,
    'Magento_Captcha' => 1,
    'Magento_Persistent' => 1,
    'Magento_ProductAlert' => 1,
    'Magento_GoogleAdwords' => 1,
    'Magento_Reports' => 1,
    'Magento_RequireJs' => 1,
    'Magento_Review' => 1,
    'Magento_Rss' => 1,
    'Magento_CatalogWidget' => 1,
    'Magento_GiftMessage' => 1,
    'Magento_OfflineShipping' => 1,
    'Magento_ConfigurableProduct' => 1,
    'Magento_CatalogSearch' => 1,
    'Magento_SendFriend' => 1,
    'Magento_Shipping' => 1,
    'Magento_Sitemap' => 1,
    'Magento_AdminNotification' => 1,
    'Magento_Tax' => 1,
    'Magento_TaxImportExport' => 1,
    'Magento_CatalogUrlRewrite' => 1,
    'Magento_Translation' => 1,
    'Magento_Ui' => 1,
    'Magento_Ups' => 1,
    'Magento_UrlRewrite' => 1,
    'Magento_Integration' => 1,
    'Magento_Usps' => 1,
    'Magento_Variable' => 1,
    'Magento_Version' => 1,
    'Magento_Webapi' => 1,
    'Magento_Weee' => 1,
    'Magento_CurrencySymbol' => 1,
    'Magento_Wishlist' => 1,
  ),
);
?>

 

Open Command line in folder root of magento and run commands: php bin/magento setup:upgrade

Run URL at frontend: http://127.0.0.1/magento2/welcomeworld/index/index

command-prompt welcomeworld

 

Related Posts

Leave a Reply

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