• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
logo

Tutsplanet

Free Technical and Blogging Resources

  • Home
  • Web Hosting
  • Programming
  • Plugins
  • Write For US
  • News
  • About Us
  • Tools
You are here: Home / PHP / How to create a Controller in Magento 2?

How to create a Controller in Magento 2?

Sep 23, 2020 by Editorial Staff Leave a Comment

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.


Editorial Staff

Editorial Staff at Tutsplanet is a dedicated team to write various tutorials about subjects like Programming, Technology and Operating Systems.

View all posts by Editorial Staff

Filed Under: PHP Tagged With: magento2

Reader Interactions

Leave a Reply Cancel reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar




Quick Links

  • A Simple YouTube Video Downloader Script in PHP
  • The 50 Most Useful jQuery Plugins for Frontend Development
  • Word Set 01
  • Convert PNG to JPG Online

Subscribe

* indicates required

Share

   

Hot topics

  • A Simple YouTube Video Downloader Script in PHP 13.2k views
  • Open a URL in a new tab using JavaScript 10.6k views
  • Using Third-Party Libraries in Codeigniter 8.3k views
  • Add FTP/SFTP in Visual Studio Code 6k views
  • Manually Install APK Files In Android Studio Emulator 4.6k views
  • Replace “\n” with new line characters, using Notepad++ 4.6k views
  • Upload Multiple Images and Store in Database using PHP and MySQL. 4.4k views
  • How To Install And Use CKEditor In Laravel? 4.2k views
  • Simple PHP Shopping Cart 4k views
  • Spout, an awesome library for reading and writing in Excel. 3.3k views

Categories

  • Design & Development
  • Drupal
  • Facebook
  • General
  • How To
  • ios
  • Javascript
  • Linux
  • Magento
  • Marketing
  • News
  • PHP
  • Plugins
  • Programming
  • Snippets List
  • Social Media
  • Softwares
  • Themes
  • Tips
  • Wordpress
  • YouTube

Copyright © 2021 · TutsPlanet Gene Theme on Genesis Framework · Powered By BunnyCDN