在 AnQiCMS 模板开发中,我们经常需要对变量进行简单的加法运算或字符串拼接,add 过滤器就是为此而生。它用起来非常方便,能够智能地处理数字相加和字符串拼接。如果你给它两个数字,它会进行数学上的加法;如果你给它两个字符串,它会将它们连接起来。即使是数字和字符串混合,AnQiCMS 也会尝试进行合理的转换并输出结果。

比如,将数字相加:

{{ 5|add:2 }}
{# 显示结果: 7 #}

或者,进行字符串拼接:

{{ "安企"|add:"CMS" }}
{# 显示结果: 安企CMS #}

那么,当其中一个变量是 nothingnil(在模板语境下通常代表变量没有被赋值或为空值)时,add 过滤器的行为就显得尤为关键了。许多用户可能会担心这会导致模板渲染错误,或者产生意想不到的结果。

AnQiCMS 的 add 过滤器在处理 nothingnil 的情况时,会采取一种非常实用的策略:它会智能地忽略那个 nothingnil 的操作数,只处理有效的操作数。

这意味着,如果你尝试将一个数字与一个 nothing 值相加,最终输出的结果会是那个有效的数字本身,而不是错误或零。例如:

{% set my_optional_number = nothing %}
{{ 10|add:my_optional_number }}
{# 显示结果: 10 #}

同样,如果 nil 是第一个操作数,结果也是一样的:

{{ nil|add:20 }}
{# 显示结果: 20 #}

对于字符串拼接,行为也类似:

{{ "开始"|add:nil }}
{# 显示结果: 开始 #}

AnQiCMS 的 add 过滤器在内部尝试对操作数进行类型转换。当遇到 nothingnil 时,它无法成功将其转换为可用于加法或拼接的有效类型(如数字或非空字符串),因此会选择忽略这个无效的操作数,只处理有效的操作数。这种设计保证了模板在数据不完整时也能尽可能地正常渲染,避免因单个