You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 2.4.4 SalesRule Validator::process()变更后自定义代码传参问题

Magento 2.4.4 SalesRule Validator::process() 调用问题修复

问题原因

Magento 2.4.4 对SalesRule\Model\Validator::process()方法做了变更:第二个参数从规则数组改为单个Rule对象。而你的自定义代码中,$this->salesRuleValidator->_getRules($item->getAddress())返回的是符合条件的规则集合(数组),直接传入会导致参数类型不匹配,无法正确执行。

修复代码

将自定义代码修改为遍历规则集合,逐个传入process()方法:

//调用vendor\magento\module-sales-rule\Model\Validator::process()
$items =  $this->cart->getQuote()->getAllVisibleItems();
/** @var Item $item */
foreach ($items as $key => $item) {
    // 获取当前地址对应的所有规则
    $rules = $this->salesRuleValidator->_getRules($item->getAddress());
    // 遍历每个规则,单独调用process方法
    foreach ($rules as $rule) {
        $this->salesRuleValidator->process($item, $rule);
    }
}

说明

_getRules()方法返回的是满足地址条件的所有促销规则数组,2.4.4版本要求process()每次只处理单个规则,因此需要嵌套遍历,确保每个规则都能正确传入方法执行。

内容的提问来源于stack exchange,提问作者Karthick Sethu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:25:29