We use cookies to make your experience better. To comply with the new e-Privacy directive, we need to ask for your consent to set the cookies. Learn more.
Magento 2: Create Custom Controller
To create a custom frontend controller in Magento 2, you need to follow these steps:
To create a custom backend controller in Magento 2, you need to follow these steps:
1. Create a Custom Module
First, you need to create a custom module. Let’s say your module is namedVendor_Module.
2. Define a Custom Route
Create aroutes.xml file in app/code/Vendor/Module/etc/frontend/:
<?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="module" frontName="module" sortOrder="10">
<module name="Vendor_Module"/>
</route>
</router>
</config>
3. Create Controller
Create aIndex.php file in app/code/Vendor/Module/Controller/Index/:
<?php
namespace Vendor\Module\Controller\Index;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
class Index extends Action
{
protected $_resultPageFactory;
public function __construct(
Context $context,
PageFactory $resultPageFactory
) {
$this->_resultPageFactory = $resultPageFactory;
parent::__construct($context);
}
public function execute()
{
$resultPage = $this->_resultPageFactory->create();
// Set title of page
$resultPage->getConfig()->getTitle()->set(__('Hello world'));
return $resultPage;
}
}
4. Create the Layout XML File
Create amodule_index_index.xml file in app/code/Vendor/Module/view/frontend/layout/:
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\Template" name="module_index" template="Vendor_Module::index.phtml"/>
</referenceContainer>
</body>
</page>
5. Create the Template phtml File
Create aindex.phtml file in app/code/Vendor/Module/view/frontend/templates/:
<p>sample text</p>
To create a custom backend controller in Magento 2, you need to follow these steps:
1. Create a Custom Module
First, you need to create a custom module. Let’s say your module is namedVendor_Module.
2. Define a Custom Route
Create aroutes.xml file in app/code/Vendor/Module/etc/adminhtml/:
<?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="admin">
<route id="module" frontName="module">
<module name="Vendor_Module" />
</route>
</router>
</config>
3. Create Controller
Create aIndex.php file in app/code/Vendor/Module/Controller/Adminhtml/Index/:
<?php namespace Vendor\Module\Controller
<?php
namespace Vendor\Module\Controller\Adminhtml\Index;
use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
class Index extends Action
{
protected $resultPageFactory;
public function __construct(
Context $context,
PageFactory $resultPageFactory
) {
parent::__construct($context);
$this->resultPageFactory = $resultPageFactory;
}
public function execute()
{
$this->_view->loadLayout();
$this->_view->getPage()->getConfig()->getTitle()->prepend(__('Tile'));
$this->_view->renderLayout();
}
}
4. Create the Layout XML File
Create amodule_index_index.xml file in app/code/Vendor/Module/view/frontend/layout/:
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<block class="Vendor\Module\Block\Adminhtml\CustomBlock" name="custom_block" template="custom_template.phtml"/>
</referenceContainer>
</body>
</page>
5. Create the Template phtml File
Createcustom_template.phtml in app/code/Vendor/Module/view/adminhtml/templates/:
<p>sample text</p>