Follow the below steps to rewrite controller
Step 1 : Create di.xml file
You can rewrite controller using preference.
Open PHPCodez/First/etc/di.xml insert the following block of code inside <config> tag rewrite controller in Magento 2
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="Magento\Customer\Controller\Account\Create" type="PHPCodez\First\Controller\Account\Create" /> </config>
Step : Create new controller
Now create a file PHPCodez\First\Controller\Account\Create.php and inser the following code
<?php namespace PHPCodez\First\Controller\Account; use Magento\Customer\Model\Registration; use Magento\Customer\Model\Session; use Magento\Framework\View\Result\PageFactory; use Magento\Framework\App\Action\Context; class Create extends \Magento\Customer\Controller\AbstractAccount { /** @var Registration */ protected $registration; /** * @var Session */ protected $session; /** * @var PageFactory */ protected $resultPageFactory; /** * @param Context $context * @param Session $customerSession * @param PageFactory $resultPageFactory * @param Registration $registration */ public function __construct( Context $context, Session $customerSession, PageFactory $resultPageFactory, Registration $registration ) { $this->session = $customerSession; $this->resultPageFactory = $resultPageFactory; $this->registration = $registration; parent::__construct($context); } /** * Customer register form page * * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page */ public function execute() { die('PHPCodez - Controller is overriden'); if ($this->session->isLoggedIn() || !$this->registration->isAllowed()) { /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); $resultRedirect->setPath('*/*'); return $resultRedirect; } /** @var \Magento\Framework\View\Result\Page $resultPage */ $resultPage = $this->resultPageFactory->create(); return $resultPage; } }
Step 3 : Flush Cache
php bin/magento cache:flush
Now if you click on the option create an account the message ‘PHPCodez – Controller is overriden’ will be displayed on the screen.