缩短if语句聪明的方式吗?

问题描述

| 是否可以缩短我的陈述,例如:
{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}.