Magento 2 - 将产品添加到购物车时直接进入结帐页面

Fre*_*edd 5 magento magento2 magento-2.0

我正在编写一个扩展,当单击产品页面上的“添加到购物车”按钮时,可以直接进入结帐页面。我在这里找到了 Magento 1 的解决方案,并尝试将其适应 Magento 2。这是我的文件:

文件etc/frontend/events.xml:

<?xml version="1.0" encoding="utf-8" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="checkout_cart_add_product_complete">
        <observer
            name="mycompany_go_to_checkout"
            instance="MyCompany\GoToCheckout\Observer\GoToCheckout" />
    </event>
</config>
Run Code Online (Sandbox Code Playgroud)

文件观察者/GoToCheckout.php:

namespace MyCompany\GoToCheckout\Observer;

use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;

class GoToCheckout implements ObserverInterface
{
    protected $_url;

    public function execute(Observer $observer)
    {
        $urlInterface = \Magento\Framework\App\ObjectManager::getInstance()->get('Magento\Framework\UrlInterface');
        $url = $urlInterface->getUrl('checkout');
        $observer->getControllerAction()->getResponse()->setRedirect($url);
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该更改或添加什么才能使其正常工作?

任何指导将不胜感激。

Emi*_*ech 2

您必须使用以下代码从 Magento2 中的观察者重定向

public function execute(Observer $observer)
{
  $redirect = $observer->getEvent()->getRedirect();
  $redirect->setRedirect(true)->setPath('checkout')->setArguments([]);
  return $this;
}
Run Code Online (Sandbox Code Playgroud)