magento2里如何在Observer里设置跳转
magento2里如何在Observer里设置跳转
m2里经常会用到event(observer)里监听事件,进行逻辑处理。
1,直接跳转
$controller = $observer->getControllerAction(); $this->redirect->redirect($controller->getResponse(), 'customer/account/login');
2,在原页面进行跳转 (得到原页面的controlleraction,替换response内容即可)
$controller = $observer->getControllerAction(); $url = $this->getUrl('customer/account/login'); //MagentoFrameworkUrlInterface $url $controller->getResponse()->setRedirect($url);
以直接跳转为例,代码如下:
<?php namespace MagentoCaptchaObserver; use MagentoFrameworkEventObserverInterface; class CheckForgotpasswordObserver implements ObserverInterface { protected $redirect; public function __construct( MagentoFrameworkAppResponseRedirectInterface $redirect ) { $this->redirect = $redirect; } /** * Redirect to login page * * @param MagentoFrameworkEventObserver $observer * @return $this */ public function execute(MagentoFrameworkEventObserver $observer) { /** @var MagentoFrameworkAppActionAction $controller */ $controller = $observer->getControllerAction(); $this->redirect->redirect($controller->getResponse(), 'customer/account/login'); return $this; } }