Ami*_*era 0 redirect observers magento2
我们已经知道如何从观察者重定向到 magento 1.x版本。
但是对于magento 2,我们不知道如何从观察者那里强制执行重定向。
我已经完成了google,但没有得到任何答案。
是的,我通过研究自己找到了解决方案
如果你想这样做,那么上__construct()
的功能your class observer
,你必须注入两类。
\Magento\Framework\App\ResponseFactory
它 负责重定向,\Magento\Framework\UrlInterface
将为该重定向创建url的类。ResponseFactory
,并使用
setRedirect($YourUrl)->sendResponse();
重定向到您希望的网址。<?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();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我写了一个重定向示例。
基本上是sales_quote_collect_totals_after
活动,我试图强制重定向以与我们联系。
这里的观察者代码:
Run Code Online (Sandbox Code Playgroud)<?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(); } }
归档时间: |
|
查看次数: |
6215 次 |
最近记录: |