Сократить путь, если заявления умнее, в любом случае? - PullRequest
1 голос
/ 31 мая 2011

Можно ли сократить мое утверждение, например, так:

{if $name eq 'Fred' or 'Monalisa' or 'Simon'}
    Welcome Sir.
{/if}

Если так, то как бы это выглядело?

Ответы [ 2 ]

1 голос
/ 31 мая 2011

@ Ответы Гаурава были близки, но не умны, синтаксис.Это должно сработать:

{if in_array($name, array('Fred', 'Monalisa', 'Simon')}
    Welcome Sir.
{/if}

Кстати, я не думаю, что кто-то по имени Моналиса предпочел бы, чтобы его называли "сэр".:)

0 голосов
/ 31 мая 2011

Вы также можете сделать эту логику в 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, ex, array('Mary', 'Sue')
    return in_array($name, $feminine_names) ? 'Madame' : 'Sir';
}

$smarty->register_modifier('welcome_title', 'welcome_title');
$smarty->assign($name);

?>

1012 *
*

{*template file*}
Welcome {$name|welcome_title}.
...