Как мне проверить, назначена ли уже переменная Smarty?

StackOverflow https://stackoverflow.com/questions/350129

  •  20-08-2019
  •  | 
  •  

Вопрос

Как мне проверить, было ли определенное значение уже присвоено Smarty, и если нет, то присвоить значение (по умолчанию)?

Ответ:

if ($this->cismarty->get_template_vars('test') === null) {
   $this->cismarty->assign('test', 'Default value');
}
Это было полезно?

Решение

Умный 2

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

Умный 3

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

Обратите внимание, что для Умный 3, вам придется использовать $smarty->getTemplateVars вместо этого.

Другие советы

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";
}

Почти уверен, что ты сможешь сделать:

if (!isset($smarty['foo'])) 
{
    $smarty->assign('foo', 'some value');
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top