我根据名称中的字符数分配了一个变量,它返回一个整数(1,2,3等)。如果选项名称与变量匹配,我想进一步添加一个{if}语句来显示一个选项。选项名称为 5“x 7” - 1,5“x 7” - 2,5“x 7” - 3 等。
{assign var="numberofcharacters" value=$smarty.get.name|count_characters}
{if $vr.variant_name == '5" x 7" - $numberofcharacters' || $vr.variant_name == '8" x 11" - $numberofcharacters'}
...
{/if}
这不会产生结果,即使我有3个应该显示的选项。请问有人让我知道我的{if}陈述有什么问题吗?
我无法使用:
{if $vr.variant_name|contains:}
因为如果返回的值是1,那么当我只需要包含1时,还包括10,11和12。
非常感谢
答案 0 :(得分:3)
带有转义引号的Smarty3:
{$numberofcharacters = 1}
{$var = "5\" x 7\" - {$numberofcharacters}"}
{$var}
或
{$numberofcharacters = 1}
{$name = '5" x 7"'}
{$var = "{$name} - {$numberofcharacters}"}
{$var}
或Smarty2
{assign var="numberofcharacters" value=1}
{assign var="name" value='5" x 7"'}
{assign var="var" value="`$name` - `$numberofcharacters`"}
{$var}
或使用cat modifier
{assign var="numberofcharacters" value=1}
{assign var="name" value='5" x 7"'}
{assign var="var" value=$name|cat:" - "|cat:$numberofcharacters}
{$var}
把东西放在一起应该很容易......
{$numberofcharacters = 1}
{$five_seven = "5\" x 7\" - {$numberofcharacters}"}
{$eight_eleven = "8\" x 11\" - {$numberofcharacters}"}
{if $vr.variant_name == $five_seven || $vr.variant_name == $eight_eleven}
…
{/if}
但是......如果你想要检查固定模式,你可能想要使用正则表达式吗?还是一个子?
{$variant_name = '5" x 7" - 123'}
{if preg_match('/^5" x 7"|^8" x 11"/', $variant_name, $tmp)}
hello world
{/if}
(你应该在你的PHP中做类似的事情......)
答案 1 :(得分:0)
Smarty没有解析这个:
'5" x 7" - $numberofcharacters'
如你所料。
http://www.smarty.net/docs/en/language.function.capture.tpl
{assign var="numberofcharacters" value=$smarty.get.name|count_characters}
{capture c1 assign=test1}5" x 7" - {$numberofcharacters}{/capture}
{capture c1 assign=test2}8" x 11" - {$numberofcharacters}{/capture}
{if $vr.variant_name==test1 || $vr.variant_name==test2}
...