考虑这些TT命令(按顺序运行):
[% x = "foo" %] # x == "foo"
[% x = "bar" IF 1 %] # x == "bar"
[% x = "bar" IF 0 %] # x == ""
为什么x
在第三条语句中分配给一个空字符串?
考虑这些TT命令(按顺序运行):
[% x = "foo" %] # x == "foo"
[% x = "bar" IF 1 %] # x == "bar"
[% x = "bar" IF 0 %] # x == ""
为什么x
在第三条语句中分配给一个空字符串?
http://template-toolkit.org/docs/manual/Syntax.html#section_Capturing_Block_Output
请注意将这种语法与副作用表示法结合使用的一个重要警告。以下指令的行为不像预期的那样:
[% var = 'value' IF some_condition %] # does not work
在这种情况下,该指令被解释为(为清楚起见添加了间距)
[% var = IF some_condition %]
value
[% END %]
而不是
[% IF some_condition %]
[% var = 'value' %]
[% END %]
该变量分配给 IF 块的输出,如果为 true,则返回“value”,如果为 false,则不返回任何内容。换句话说,下面的指令总是会导致 'var' 被清除。
[% var = 'value' IF 0 %]
为了达到预期的行为,指令应该写成:
[% SET var = 'value' IF some_condition %]