如何解决如何在 Sylius 中手动检查促销规则
我正在尝试检查订单的促销规则。
我正在覆盖订单处理器以修改它处理促销优先级的方式(某些客户群具有特殊优势,即独占优势)。
我希望最好的促销活动处于活动状态,例如:
- 客户是“黄金”,每笔订单可享受 10% 的折扣。
- 一张优惠券给他 30 美元的折扣
- 订单是 250 美元
优惠券更适合我的客户,对吧?但是独家促销的优先级使其默认选中。
我已经检查了我的订单处理程序中存在的每个促销活动,以找到最适合客户的促销活动并应用它。它起作用了。
问题:我无法检查促销规则是否符合条件。因此,我正在向不应该促销的客户进行促销。
我如何访问 PromotionRulesEligibilityChecker ? 好像不是自动连线的,我也进不去。
所以,我试过这种方式:
$ruleRegistery = new ServiceRegistry(RuleCheckerInterface::class);
/** @var PromotionRule $rule */
foreach ($promotion->getRules() as $rule) {
$ruleChecker = $ruleRegistery->get($rule->getType());
$promotionRulesEligibilityChecker = new \Sylius\Component\Promotion\Checker\Eligibility\PromotionRulesEligibilityChecker($ruleChecker);
if (!$promotionRulesEligibilityChecker->isEligible($promotionSubject,$promotion)) {
return false;
}
}
return true;
ServiceRegistery 不知道任何规则类型,请给我:
服务服务“item_total”不存在,可用服务服务:“”
有什么想法吗?
非常感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。