用途:为 Magento 2 的 Hyvä 主题编写兼容 CSP 的 Alpine.js 组件。Alpine CSP 是去掉 unsafe-eval 的专门构建,支付相关页面因 PCI-DSS 4.0(2025 年 4 月 1 日起强制)需要它。CSP 兼容写法在标准与 CSP 两种构建下都可用,建议一律采用。
主要能力与约束:CSP 下不允许内联转换与直接赋值。属性读取照常(x-show="open"),但取反需用方法(x-show="isNotOpen");状态修改需抽成方法(@click="close" 而非 open = false);带参调用改为数据集传参(@click="setTab" data-tab="info");不支持 x-model,需用 :value + @input 配合方法;不支持 x-for="i in 10" 这类范围迭代。
使用方式:组件用 x-data="initComponentName" 挂载,构造函数为全局具名函数以便被代理和扩展。必须在 alpine:init 事件监听中通过 Alpine.data() 注册,并加 {once: true} 防止重复注册;每个 script 块后调用 $hyvaCsp->registerInlineScript()。PHP 值进 JS 字符串用 $escaper->escapeJs(),数据属性用 $escaper->escapeHtmlAttr()。组合对象时用展开语法并传 this,如 ...hyva.modal.call(this)、...hyva.formValidation(this.$el)。数值输入用 hyva.safeParseNumber(),方法内可用 $event、$el,循环内方法可访问 item、index 等变量;值提供者可直接引用方法名。
可用工具:hyva 对象提供 getFormKey、getUenc、postForm、getCookie/setCookie、formatPrice、str/strf、replaceDomElement、trapFocus/releaseFocus、getBrowserStorage、createBooleanObject、alpineInitialized 等。事件可用 @private-content-loaded.window 等监听,方法内用 $dispatch 派发,多监听器可用 x-bind="eventListeners" 对象模式。
适用场景与限制:适用于 Hyvä 主题下交互组件(数量选择、弹窗、表单校验等)的开发与迁移。需注意所有 CSP 限制,避免内联表达式;价格、平台等其它信息资料未提供。