Shopware6:如何为订单自定义字段创建规则并解决订单获取问题?
Shopware Flow Builder订单自定义字段校验实现方案
优先用原生Flow Builder条件(无需自定义规则)
触发条件选择「订单已创建」后,直接在判断步骤添加「订单属性」条件,绑定你的自定义字段customtextField,设置判断逻辑为「不为空」即可。Shopware Flow Builder原生支持订单自定义字段的校验,完全不需要额外编写自定义规则类,这是最直接高效的方案。
自定义规则的正确实现方式(若必须自定义)
如果因为特殊业务需求需要自定义规则,在规则类中可以通过以下方式获取当前订单:
- 确保规则类继承
OrderRule,并在match方法中通过RuleScope提取订单对象:
public function match(RuleScope $scope): bool { if (!$scope instanceof OrderRuleScope) { return false; } $order = $scope->getOrder(); $customValue = $order->getCustomFields()['customtextField'] ?? ''; return !empty(trim($customValue)); }
- 服务配置中指定规则的
scope为order,这样Flow Builder触发时会自动传入订单上下文,确保能拿到最新创建的订单数据。
注意事项
- 确认自定义字段已正确关联到订单实体,否则Flow Builder的条件列表中无法找到该字段。可以检查自定义字段的配置,确保
entity设置为order。
内容的提问来源于stack exchange,提问作者pariwesh
相关产品推荐
相关产品推荐

