magento2里如何在Observer里设置跳转

管理员组 admin 15天前 34

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'); //Magento\Framework\UrlInterface $url
$controller->getResponse()->setRedirect($url);


以直接跳转为例,代码如下:

<?php
namespace Magento\Captcha\Observer;
use Magento\Framework\Event\ObserverInterface;
class CheckForgotpasswordObserver implements ObserverInterface
{
    protected $redirect;
    public function __construct(
        \Magento\Framework\App\Response\RedirectInterface $redirect
    ) {
        $this->redirect = $redirect;
    }
    /**
     * Redirect to login page
     *
     * @param \Magento\Framework\Event\Observer $observer
     * @return $this
     */
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        /** @var \Magento\Framework\App\Action\Action $controller */
        $controller = $observer->getControllerAction();
        $this->redirect->redirect($controller->getResponse(), 'customer/account/login');
        return $this;
    }
}


最新回复 (0)
返回
发帖