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

如何在Shopware App Script中获取应用配置与客户生日数据?

Shopware App Script 获取客户生日、应用配置及拦截订单流程实现

1. 获取客户出生日期

  • 登录客户的生日信息可从购物车关联的客户实体中直接获取,通过services.cart.customer.birthday即可访问。
  • 注意:未登录的访客用户没有生日数据,需先判断客户是否存在,避免空值报错。
    示例代码:
{# @var services \Shopware\Core\Framework\Script\ServiceStubs #}
{% set customer = services.cart.customer %}
{% set birthday = customer ? customer.birthday : null %}

{# 可选:将生日格式化为字符串 #}
{% if birthday %}
    {% set formattedBirthday = birthday|date('Y-m-d') %}
{% endif %}

2. 获取应用配置变量

  • Shopware App的自定义配置项可通过services.app.config直接读取,前提是你已在App的manifest.xml中定义了对应字段。
  • 假设你在配置中定义了一个名为min_purchase_age的限制年龄项,获取方式如下:
    示例代码:
{# 获取应用配置中的指定变量 #}
{% set minAge = services.app.config.min_purchase_age %}
  • 补充:manifest.xml中配置项的定义示例:
<config>
    <field type="int" name="min_purchase_age" label="最低购买年龄" helpText="设置允许下单的最低年龄阈值"/>
</config>

3. 拦截订单完成流程

  • 选择合适的脚本钩子:推荐使用checkout.cart.validate(结账前验证)或checkout.order.before(订单创建前)事件,这两个钩子可直接阻止订单完成。
  • 通过services.cart.addError()添加错误提示,前端会显示该错误并中断结账流程。
  • 结合生日与配置变量的完整拦截示例:
{# @var services \Shopware\Core\Framework\Script\ServiceStubs #}
{% set items = services.cart.items %}
{% set customer = services.cart.customer %}
{% set minAge = services.app.config.min_purchase_age %}

{# 仅对登录客户执行年龄验证 #}
{% if customer and customer.birthday %}
    {% set today = 'now'|date('Y-m-d') %}
    {% set age = today|date('Y') - customer.birthday|date('Y') %}
    {# 修正生日未过当年的年龄计算 #}
    {% if today < customer.birthday|date('m-d') %}
        {% set age = age - 1 %}
    {% endif %}

    {# 满足拦截条件时阻止订单 #}
    {% if age < minAge %}
        {{ services.cart.addError('您的年龄未达到最低购买要求,无法完成订单') }}
    {% endif %}
{% endif %}

注意事项

  • 需在App的script.xml中绑定对应钩子,示例:
<scripts>
    <script name="age-restriction-check" hook="checkout.cart.validate">
        <content>
            {# 上述Twig脚本代码 #}
        </content>
    </script>
</scripts>
  • 若业务要求强制验证生日,可添加逻辑引导访客用户登录后再结账。

内容的提问来源于stack exchange,提问作者Marc Cheng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:41:18