问题描述
|
是否可以缩短我的陈述,例如:
{if $name eq \'Fred\' or \'Monalisa\' or \'Simon\'}
Welcome Sir.
{/if}
如果是这样,它将如何看起来?
解决方法
@Gaurav的答案很接近,但是语法并不聪明。这应该工作:
{if in_array($name,array(\'Fred\',\'Monalisa\',\'Simon\')}
Welcome Sir.
{/if}
顺便说一句,我不认为有人叫Monalisa会更喜欢被称为“先生”。 :)
, 您也可以在PHP中执行以下逻辑:
<?php
// where $feminine_names is array of names,ex,array(\'Mary\',\'Sue\')
$welcome_title = in_array($name,$feminine_names) ? \'Madame\' : \'Sir\';
// if name is still needed in your template
$smarty->assign(\'name\',$name);
$smarty->assign(\'welcome_title\',$welcome_title);
?>
{*template file*}
Welcome {$welcome_title}.
或使用自定义修饰符加倍努力:
<?php
function welcome_title($name){
// where $feminine_names is array of names,\'Sue\')
return in_array($name,$feminine_names) ? \'Madame\' : \'Sir\';
}
$smarty->register_modifier(\'welcome_title\',\'welcome_title\');
$smarty->assign($name);
?>
{*template file*}
Welcome {$name|welcome_title}.