Liquid控制流块中赋值与捕获现有自定义属性报错问题排查
Liquid代码错误说明
核心报错原因
{% capture %}标签不支持修改customer这类全局对象的属性,它只能用于创建或更新独立的自定义Liquid变量,你尝试用capture给customer.level赋值的写法不符合Liquid语法要求,这是引擎抛出错误的直接原因。
冗余逻辑优化点
- 空值判断存在冗余:Liquid的
blank判断已经覆盖了空值、空字符串等所有空状态场景,不需要额外添加customer.level == ''的判断条件。
修正后代码
可以通过自定义变量存储等级值,不要尝试修改原customer对象的属性:
{% assign user_reward_level = customer.level %} {% if user_reward_level == blank %} {% assign user_reward_level = "Level 1" %} Hey! Your rewards level is: {{ user_reward_level }} {% else %} Customer level is: {{ user_reward_level }} {% endif %}
也可以用Liquid内置的default过滤器简化代码:
{% assign user_reward_level = customer.level | default: "Level 1" %} {% if user_reward_level == "Level 1" %} Hey! Your rewards level is: {{ user_reward_level }} {% else %} Customer level is: {{ user_reward_level }} {% endif %}
内容的提问来源于stack exchange,提问作者Nicki Chen
相关产品推荐
相关产品推荐

