如何检查是否已分配Smarty变量?

时间:2008-12-08 16:48:50

标签: php smarty template-engine

如何检查特定值是否已分配给Smarty,如果没有分配(默认)值?

答案:

if ($this->cismarty->get_template_vars('test') === null) {
   $this->cismarty->assign('test', 'Default value');
}

3 个答案:

答案 0 :(得分:14)

Smarty 2

if ($smarty->get_template_vars('foo') === null) 
{
   $smarty->assign('foo', 'some value');
}

Smarty 3

if ($smarty->getTemplateVars('foo') === null) 
{
   $smarty->assign('foo', 'some value');
}

请注意,对于 Smarty 3 ,您必须改为使用$smarty->getTemplateVars

答案 1 :(得分:1)

如果您没有设置变量,

get_template_vars()将返回null,因此您可以执行

if ($smarty->get_template_vars('test') === null) {
    echo "'test' is not assigned or is null";
}

但是,如果您已分配变量但设置为null,则检查将失败,在这种情况下您可以执行

$tmp = $smarty->get_template_vars();
if (!array_key_exists('test', $tmp)) {
    echo "'test' is not assigned";
}

答案 2 :(得分:0)

非常确定你能做到:

if (!isset($smarty['foo'])) 
{
    $smarty->assign('foo', 'some value');
}