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

2024-01-10

我正在编写一个扩展,当单击产品页面上的“添加到购物车”按钮时,可以直接进入结账页面。我找到了 Magento 1 的解决方案here http://www.magecorner.com/bypass-cart-and-go-to-checkout/我尝试将其适应 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>

文件观察者/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);
    }
}

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

任何指导将不胜感激。


下面是完整的工作代码。我在我的模块中使用了 if 。

<?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>

观察者代码是:

namespace MyCompany\GoToCheckout\Observer;

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

class GoToCheckout implements ObserverInterface
{
    protected $uri;
    protected $responseFactory;
    protected $_urlinterface;

 public function __construct(
        \Zend\Validator\Uri $uri,
        \Magento\Framework\UrlInterface $urlinterface,
        \Magento\Framework\App\ResponseFactory $responseFactory,
         \Magento\Framework\App\RequestInterface $request
    ) {
        $this->uri = $uri;
        $this->_urlinterface = $urlinterface;
        $this->responseFactory = $responseFactory;
        $this->_request = $request;
    }

    public function execute(Observer $observer)
    {
        $resultRedirect = $this->responseFactory->create();
        $resultRedirect->setRedirect($this->_urlinterface->getUrl('checkout'))->sendResponse('200');
        exit();
    }
}

但此代码仅适用于详细信息页面。在列表页面中它将不起作用,因为它是由 Ajax 管理的。那么解决方案是什么呢?简单,只需创建一个插件结账/控制器/购物车/Add.php并将您的逻辑写入此文件中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Magento 2 - 将产品添加到购物车时直接进入结账页面 的相关文章

  • Magento:如何覆盖本地模块中的模型

    我试图在本地文件夹中覆盖本地文件夹中的模块 但我不知道是否可能 这就是我所做的 我创建了 local Mycompany Modulename Model Model php 我想覆盖 local Othercompany Modulena
  • 创建单个随机 Magento 优惠券

    我遇到了一些麻烦 我想要做的是每次有人订阅我们的时事通讯时 在 Magento 中自动生成一个随机优惠券代码 这张优惠券可减 10 美元 并且有exp 订阅后两周的日期 因此 我正在尝试编写一个简单的脚本 当提交 订阅我们的时事通讯 表单时
  • Magento:获取给定产品的购物车数量

    我使用这个代码 items Mage getModel checkout cart gt getQuote gt getAllItems items Mage getSingleton checkout session gt getQuot
  • 在magento Attributes中添加自定义属性并显示在前端

    我已经开始使用 magento 作为我的电子商务 cms 我知道这是一个非常强大的平台 最近 我发现它的功能可以帮助开发人员扩展核心 并且我已经成功添加了自定义类别选项 是否有机会在某个属性上达到相同的结果 我想在属性选项卡上添加文本描述并
  • 重新排序 Magento JavaScript 包含 (addJs)

    我会保持简单 在我的产品页面上 我需要删除prototype js 文件并将其替换为最新版本的prototype 到目前为止 我已经使用 local xml 成功替换了它
  • 使用magento中SOAP API的salesOrderInfo获取简单的产品sku和数量

    我在以下代码中添加了 app code core Mage Sales Model Order Api php File public function info orderIncrementId order Mage getModel s
  • 鼠标悬停缩放在 magento 中不起作用

    我想在我的 magento 网站上安装 jquery 缩放框 我几乎尝试了互联网上找到的所有东西 难道我做错了什么 但我看不到让 jquery 鼠标悬停在我的 magento 网站上进行缩放 我也在我的 jquery 文件中放入了 jque
  • 多个商店和多个具有不同角色的管理员

    我毫不怀疑magento可以处理多个商店 但我想知道每个商店是否可以处理这样的特定用户 其中他们可以像管理员一样访问他们的目录 销售 库存等 但仅限于他们的特定商店 这是我的示例表示 Magento website gt Store Cat
  • Magento 使用 MAGMI 批量导入图像 - 排除图像

    谢谢阅读 我正在使用 magmi 导入超过 30 000 个带有图像的产品 问题在于图像已导入 但全部被排除 是否有任何我可以使用并获取所有图像的 SQL 查询 我使用了这个查询 但只有一行受到影响 update catalog produ
  • 如何设置每个产品的运费[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在magento配置中我将运费设置为5英镑 有没有办法在产品级别设置运费 显然有 我只是找不到在哪里 如果您始终对给定产品使用相同的运
  • 以编程方式将礼品消息设置为现有订单[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找一些代码 以便在 Mage
  • 如何验证magento中的单选按钮?

    在我的自定义模块中 我有一个带有单选按钮的表单 当我单击提交按钮时 它不会验证单选按钮 如何使用 Magento 默认验证类进行验证 Thanks 我得到了答案 use validate one required by name在单选按钮的
  • 将 Google 信任徽章添加到 Magento

    我正在尝试将 Google Trust Badge 添加到我的 magento 商店 我尝试在 Magento 网站上搜索扩展程序 但找不到 我是否需要将以下代码粘贴到产品和结账页面 还是必须对其进行更改 如果有人能引导我走向正确的方向 我
  • 如何使用模块在magento admin中创建子菜单

    我正在开发 magento 模块 我想在管理部分添加菜单 like 管理 gt 目录 gt 属性 gt 管理属性 gt 这里是我的菜单 Magento 版本 1 5 1 0 我怎样才能做到这一点 在你的模块中adminhtml xml输入以
  • Magento 自定义模块与自定义数据库表管理页面

    我按照维基帖子设置了带有自定义数据库表的自定义模块 http www magentocommerce com wiki 5 modules and development 0 module development in magento cu
  • 通过 SOAP API V2 将简单产品链接到可配置产品

    有谁知道如何通过 API 将可配置产品链接到简单产品 我不认为 Product Link API 会这样做 http www magentocommerce com wiki doc webservices api api catalog
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • Magento - 从观察者方法重定向客户

    在本次活动中checkout cart add product complete 我希望客户被重定向到外部网页http www example com 为此 我使用这段代码 它根本不起作用 public function moduleMet
  • Magento:如何翻译动作标签内容?

    我有默认的 page xml 我已经添加了
  • magento 中的自动发票

    我创建了新的自定义产品类型 它扩展了 magento 中的虚拟产品 现在我想阻止在线支付的自动发票 例如 当订单包含至少一种自定义产品类型时 使用 Paypal 所有包含此类产品的订单都必须手动开具发票 我应该如何解决这个问题 最好的方法是

随机推荐

  • QML:通过父引用引用根窗口是不可靠的

    Qt QML 问题 使用 Qt 5 7 采用以下简单的 QML 程序 该程序显示垂直对齐的红色矩形和蓝色矩形 两个矩形的单击处理程序都尝试更改父宿主窗口的颜色 但有细微的差别 红色矩形通过 id 直接引用主窗口 根窗口 蓝色点击处理程序通过
  • lxml --pretty_print--写入文件问题

    我正在将原始数据写入xml文件python程序 在我的设计中 我们逐行获取原始数据 然后将其写入xml文件中 例如
  • PHP html_entity_decode 未按预期解码实体?

    在下面的代码中 string1 function doesn apos t work as expected string2 html entity decode string1 string2 仍然包含 apos 调用 html enti
  • AngularJS Batarang - 什么是拦截表达式?

    我目前正在使用 AngularJS 1 3 0 稳定版本和 Batarang Chrome 扩展 在监视树中 我注意到在我的许多范围下都有一个称为 interceptedExpression 的东西 那是什么或者什么场景创建了拦截表达式 W
  • MySQL Workbench - 架构与数据库相同吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试为 php 代码设置数据库
  • Powershell 脚本不通过计划任务运行

    我的域控制器上有一个小脚本 设置为通过 SMTP 向我发送有关最新安全事件 4740 的电子邮件 该脚本在手动执行时将按预期运行 但是 当设置为通过计划任务运行时 尽管它显示已执行 但什么也没有发生 没有电子邮件 脚本如下 If NOT S
  • 全局变量的 JavaScript 提升

    我想知道 javascript 提升如何用于全局变量 假设我有以下代码片段 var a 5 function print console warn a a b var a 10 b 5 console warn a a print 在这种情
  • 如何获取数组中的唯一值[重复]

    这个问题在这里已经有答案了 如何获取数组中唯一值的列表 我是否总是必须使用第二个数组 或者 JavaScript 中是否有类似于 java 的 hashmap 的东西 我将要使用JavaScript and jQuery仅有的 不能使用额外
  • 在 Haxe 中使用对象作为 Map 键

    我正在尝试做一个Map以一个对象作为键 问题是 当我尝试从这张地图中获取元素时 我总是得到null 这是因为我没有提供与密钥完全相同的参考 我正在提供一个具有相同的对象values 所以参考不同 有什么办法可以解决吗 我可以让它使用某种eq
  • wget:检查文件时间戳并覆盖[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我怎样才能得到wget去做这个 从某个位置下载文件x 仅当文件的本地副本的时间戳早于该文件的时间戳时x 这意味着 仅当存在文件的较新版本时 它才应从给
  • 从 16 位硬件寄存器读取

    在嵌入式系统上 我们有一个设置 允许我们通过命令行界面读取任意数据以用于诊断目的 对于大多数数据 这工作得很好 我们使用memcpy 将数据复制到请求的地址并通过串行连接将其发送回 然而 对于 16 位硬件寄存器 memcpy 导致一些问题
  • Linkedin iOS SDK:当个人资料照片为空时,授权屏幕上的样式错误

    我们使用 LinkedIn sdk 授权 iOS 移动应用程序访问用户的 LinkedIn 个人资料 应用程序是使用 Xamarin 制作的 本机 LinkedIn sdk 已绑定 因此它应该以相同的方式工作 如果LinkedIn头像为空
  • 使用正则表达式拆分驼峰式字符串

    我有一个像这样的驼峰式字符串s ThisIsASampleString 我想使用大写字母作为分隔点分成一个数组 我期待这个 This Is A Sample String 这是我到目前为止所做的 s ThisIsASampleString
  • ASP.NET Web API 中的用户身份验证

    我需要开发一个 iPhone 客户端来使用来自某处的 JSON 数据 我选择了 MS 的 Web API 因为它看起来很简单 但在验证用户身份时 事情变得非常令人沮丧 我很惊讶我无法找到一个清晰的示例来说明如何从登录屏幕到使用Authori
  • 从应用程序内部重新安装 iPhone 应用程序

    我想找到一种方法 是否可以从里面重新安装 iPhone 应用程序 假设我的用户已经在手机中安装了该应用程序 现在发布了新版本 我可以制作我的应用程序 以便它可以通过互联网检查新版本是否可用 如果有 则下载它并要求用户安装它 如果用户同意 它
  • 如何让精灵坐在移动的精灵上

    如何让精灵坐在移动的精灵上并与其一起旅行 我已经让红色盒子随着冲动而跳跃 当它落到正在移动的黑色块上时 红色盒子会保持原状 掉落时会滑动移动物体 就像没有摩擦力一样 在重力 摩擦力均为 1 0 的情况下 两者甚至尝试增加质量 但没有任何效果
  • 如何为 TypeScript 文件创建模板?

    我有以下内容 function Opens a new modal window param object options an object with any of the following options return object
  • 类型错误:“字节”类型的对象不可 JSON 序列化

    我刚刚开始Python 编程 我想用scrapy创建一个机器人 它显示 类型错误 当我运行项目时 字节 类型的对象不可 JSON 序列化 import json import codecs class W3SchoolPipeline ob
  • Spring Data MongoDB - 保存 LocalDate/LocalDateTime 时,该值被设置为昨天

    我在将 Java8 Date API 值保存到 MongoDB 数据库时遇到问题 每当保存新的 LocalDate 实例 LocalDate now 时 我们都会获得昨天日期 时间设置为下午 23 00 的值 例子 dt getDate t
  • Magento 2 - 将产品添加到购物车时直接进入结账页面

    我正在编写一个扩展 当单击产品页面上的 添加到购物车 按钮时 可以直接进入结账页面 我找到了 Magento 1 的解决方案here http www magecorner com bypass cart and go to checkou