gpt4 book ai didi

redirect - Magento2:从观察者重定向

转载 作者:行者123 更新时间:2023-12-05 08:27:36 24 4
gpt4 key购买 nike

我们已经知道 magento 1.x 版本的 How to redirect from an Observer

但对于 ma​​gento 2,我们不知道如何强制从观察者进行重定向

我已经谷歌了,但没有得到任何答案。

最佳答案

是的,我通过研究找到了自己的解决方案

如果你想这样做,那么在 你的类观察者__construct() 函数上,你必须注入(inject)两个类(class)

  • 首先,\Magento\Framework\App\ResponseFactory 负责重定向,
  • 另一个类 \Magento\Framework\UrlInterface 将生成 url用于该重定向。
  • 然后为 ResponseFactory 创建对象,并使用setRedirect($YourUrl)->sendResponse(); 重定向到您想要的 url。

观察者

<?php
namespace [Vendor]\[modulename]\Observer;
use \Magento\Framework\Event\Observer;
use \Magento\Framework\Event\ObserverInterface;
class [YourClass] implements ObserverInterface {
protected $_responseFactory;
protected $_url;
public function __construct(
......
\Magento\Framework\App\ResponseFactory $responseFactory,
\Magento\Framework\UrlInterface $url,
......
) {
$this->_responseFactory = $responseFactory;
$this->_url = $url;
}
public function execute(Observer $observer) {
$event = $observer->getEvent();
$CustomRedirectionUrl = $this->_url->getUrl('[ModuleName]/[ModuleName]/[[Action]');
$this->_responseFactory->create()->setRedirect($CustomRedirectionUrl)->sendResponse();
/* die use for stop excaution */
die();
}
}

示例:

我在这里写了一个重定向的例子。

基本上 sales_quote_collect_totals_after 事件,我试图强行重定向以联系我们。

这里是观察者代码:

<?php
namespace Devamit\Mgoto\Observer;
use \Magento\Framework\Event\Observer;
use \Magento\Framework\Event\ObserverInterface;

class Challo implements ObserverInterface {
protected $_responseFactory;
protected $_url;

public function __construct(

\Magento\Framework\App\ResponseFactory $responseFactory,
\Magento\Framework\UrlInterface $url
) {
$this->_responseFactory = $responseFactory;
$this->_url = $url;
}

public function execute(Observer $observer) {
$event = $observer->getEvent();

$myfile = fopen("var/log/debug.log", "a+") or die("Unable to open file!");
fwrite($myfile, 'Amitber',true);
fclose($myfile);
// $this->_responseFactory->create()->setRedirect('www.google.com')->sendResponse();
$customerBeforeAuthUrl = $this->_url->getUrl('contact/index/index');
$this->_responseFactory->create()->setRedirect($customerBeforeAuthUrl)->sendResponse();
die();
}
}

关于redirect - Magento2:从观察者重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36902212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com