Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I check to see if a Smarty variable is already assigned?

How do I check to see if a particular value has already been assigned to Smarty and if not assign a (default) value?

Answer:

if ($this->cismarty->get_template_vars('test') === null) {
   $this->cismarty->assign('test', 'Default value');
}
like image 414
GloryFish Avatar asked Dec 08 '08 16:12

GloryFish


2 Answers

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');
}

Note that for Smarty 3, you will have to use $smarty->getTemplateVars instead.

like image 52
Andy Avatar answered Sep 30 '22 17:09

Andy


get_template_vars() will return null if you haven't set a variable, so you can do

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

However that check will fail if you have a variable assigned but set as null, in which case you could do

$tmp = $smarty->get_template_vars();
if (!array_key_exists('test', $tmp)) {
    echo "'test' is not assigned";
}
like image 24
Tom Haigh Avatar answered Sep 30 '22 17:09

Tom Haigh