Controller is one of the most important thing in MVC Frameworks in general, so the same in Magento 2 as well. It’s very duty is to receive the request, process and render to user.
In Magento 1 there was one controller and it accommodates all the CRUD routes or other relevant routes. But in Magento 2 controllers are adopting single responsibility patterrn as there will be only one method called execute in every controller.
There are frontend controllers and backend controllers in Magento 2, but they works similar, except the form key in admin controllers.
So let’s take the below URL from our Magento 2 store.
http://domain.com/route_name/controller/action
- route_name is a unique name which is set in routes.xml.
- controller is the folder inside Controller folder.
- action is a class which have an execute method to process request.
How to create a controller in Magento 2?
Step 1: Create routes.xml file at app/code/MyCompany/Blog/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 frontName="blog" id="blog"> <module name="MyCompany_Blog"/> </route> </router> </config>
Step 2: Create controller file at app/code/MyCompany/Blog/Controller/Index/
<?php namespace MyCompany\Blog\Controller\Index; class Index 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() { print "Hello World"; exit; } }
Controllers must be extended \Magento\Framework\App\Action\Action class which has dispatch method which will call execute() method in action class. In this execute() we just print Hello World for simplicity, but this should be tied up with layout XML, that we will discuss in another tutorial.
- Just want to thank us? Buy us a Coffee
- May be another day? Shop on Amazon using our links.
Your prices won't change but we get a small commission.
Leave a Reply