How to Create a Custom Extension in Magento 2 with Controller, Model, View, and Admin Section Menu with benefits

In the world of eCommerce, Magento 2 has become one of the most popular platforms for building online stores. With its advanced features and customization options, it offers an ideal environment for creating custom extensions. In this blog post, we will discuss how to create a custom extension in Magento 2 with a controller, model, view, and an admin section menu code example.

Setting up Varnish Cache on Ubuntu and Magento 2: A Comprehensive Guide

Creating a custom extension in Magento 2 can be useful in several scenarios. Here are some examples of when to create a custom extension in Magento 2:

  1. Adding new functionality: If you want to add new features or functionality to your Magento 2 online store that are not available in the core system, creating a custom extension can be a good option. This can include integrating with third-party services, adding new payment or shipping options, or customizing the checkout process.
  2. Customizing existing functionality: If you want to modify or extend existing functionality in Magento 2, such as changing the way products are displayed or adding custom attributes to product pages, creating a custom extension can help you achieve this.
  3. Integrating with other systems: If you want to integrate your Magento 2 store with other systems, such as a CRM or inventory management system, creating a custom extension can provide a seamless integration that meets your specific needs.
  4. Performance optimization: If you have identified performance issues with your Magento 2 store, creating a custom extension can help you optimize specific parts of your site to improve performance.

In general, creating a custom extension in Magento 2 can help you tailor your online store to your specific business needs and provide a better experience for your customers.

Below are the steps to create Custom extension in Magento 2

Step 1: Setting up the module

The first step in creating a custom extension in Magento 2 is to set up a new module. You can do this by creating a new directory under the “app/code” directory of your Magento 2 installation. In this example, we will create a module called “MyModule”.

app/code/MyModule/

Inside the “MyModule” directory, create a new directory called “Controller”, “Model”, “view” and “etc” respectively. These directories will hold the controller, model, view, and configuration files for your extension.

Step 2: Creating the Controller

The controller is responsible for handling user requests and returning a response. In Magento 2, controllers are created in the “Controller” directory of your module. To create a controller, create a new file called “Index.php” inside the “Controller” directory.

app/code/MyModule/Controller/Index.php

Here is an example code for a controller:

<?php

namespace MyModule\Controller;

use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;

class Index extends Action
{
    /**
     * @var PageFactory
     */
    protected $resultPageFactory;

    /**
     * Constructor
     *
     * @param Context $context
     * @param PageFactory $resultPageFactory
     */
    public function __construct(
        Context $context,
        PageFactory $resultPageFactory
    ) {
        $this->resultPageFactory = $resultPageFactory;
        parent::__construct($context);
    }

    /**
     * Index action
     *
     * @return \Magento\Framework\View\Result\Page
     */
    public function execute()
    {
        return $this->resultPageFactory->create();
    }
}

Step 3: Creating the Model

The model is responsible for handling the business logic of your extension. In Magento 2, models are created in the “Model” directory of your module. To create a model, create a new file called “MyModel.php” inside the “Model” directory.

app/code/MyModule/Model/MyModel.php

Here is an example code for a model:

<?php

namespace MyModule\Model;

use Magento\Framework\Model\AbstractModel;

class MyModel extends AbstractModel
{
    /**
     * Define resource model
     */
    protected function _construct()
    {
        $this->_init('MyModule\Model\ResourceModel\MyModel');
    }
}

Step 4: Creating the View

The view is responsible for displaying the output of your extension. In Magento 2, views are created in the “view” directory of your module. To create a view, create a new directory called “frontend” inside the “view” directory. Then, create a new directory called “templates” inside the “frontend” directory. Finally, create a new file called “index.phtml” inside the “templates” directory.

app/code/MyModule/view/frontend/templates/index.phtml

Here is an example code for a view:

<h1>Welcome to My Module</h1>

Step 5: Creating the Admin Section Menu

The admin section menu is responsible for providing a link to your extension in the Magento 2 admin panel. To create an admin section menu, create a new file called “menu.xml” inside the “etc” directory of your module.

app/code/MyModule/etc/menu.xml

Here is an example code for a menu:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
    <menu>
        <add id="MyModule::mymodule" title="My Module" module="MyModule" sortOrder="10" resource="MyModule::mymodule"/>
        <add id="MyModule::mymodule_index" title="My Module" module="MyModule" sortOrder="10" parent="MyModule::mymodule" action="mymodule/index" resource="MyModule::mymodule"/>
    </menu>
</config>

Step 6: Registering the Module

The final step is to register your module with Magento 2. To do this, create a new file called “registration.php” in the root directory of your module.

app/code/MyModule/registration.php

Here is an example code for a registration file:

<?php

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

Conclusion:

In this blog post, we have discussed how to create a custom extension in Magento 2 with a controller, model, view, and an admin section menu code example. By following these steps, you can create a fully functional Magento 2 extension that can add new functionality to your online store. Remember to test your extension thoroughly before deploying it to a production environment.

You may also like...

Creating a Shopify App using Laravel How to Create Custom WordPress Plugin? How to Build a Telegram Bot using PHP How to Convert Magento 2 into PWA?