0

I am new to Magento and was trying tutorial's example, and my site got broken with HTTP ERROR 500 when i have added my events.xml under my module's etc folder

<event name="controller_action_predispatch">
    <observer name="predispatch" instance="MyCompany\Test\Observer\ControlerPreDispatch" shared="false" />
</event>

along with my observer and here is the constructor

public function __construct(\Magento\Framework\App\Response\RedirectInterface $redirect,\Magento\Framework\App\ActionFlag $actionFlag)

Here is apache error:

PHP Fatal error:  `Uncaught TypeError: Argument 1 passed to MyCompany\\Test\\Observer\\ControlerPreDispatch::__construct() must implement interface Magento\\Framework\\App\\Response\\RedirectInterface,` .....

any clue?

  • 1
    Can you post your full code lines of your Observer? – Khoa TruongDinh Feb 20 '17 at 10:58
  • did you clear var/generation? – Jaimin Sutariya Feb 20 '17 at 12:55
  • namespace MyCompany\Test\Observer; use Magento\Framework\Event\ObserverInterface; class ControlerPreDispatch implements ObserverInterface { protected $redirect; protected $_actionFlag; public function __construct(\Magento\Framework\App\Response\RedirectInterface $redirect,\Magento\Framework\App\ActionFlag $actionFlag) { $this->_actionFlag = $actionFlag; } – Bashir Feb 21 '17 at 18:30
  • public function execute(\Magento\Framework\Event\Observer $observer) { $request = $observer->getEvent()->getData('request'); if ($request->getModuleName() != 'catalog' || $request->getControllerName() !='product') { $controller = $observer->getControllerAction(); $this->_actionFlag->set('',\Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH, true); $this->redirect->redirect($controller->getResponse(),'catalog/product/view/id/1'); } } – Bashir Feb 21 '17 at 18:30
  • No i didn't delete var/generation ... why should i ? – Bashir Feb 21 '17 at 18:32
0

All needed was just to delete the var/generation and recompile di again "php magento setup:di:compile"

0

After editing __construct function of any class you need to remove /var/generation directory.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.