我正在尝试检查订单的促销规则。
我正在覆盖订单处理器以修改它处理促销优先级的方式(某些客户群具有特殊优势,即独占优势)。
我希望最好的促销活动处于活动状态,例如:
优惠券更适合我的客户,对吧?但是独家促销的优先级使其默认选中。
我已经检查了我的订单处理程序中存在的每个促销活动,以找到最适合客户的促销活动并应用它。它起作用了。
问题:我无法检查促销规则是否符合条件。因此,我正在向不应该促销的客户进行促销。
我如何访问 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”不存在,可用服务服务:“”
有什么想法吗?
非常感谢