2008-12-08 13 views

Odpowiedz

13

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

Zauważ, że dla Smarty 3, ty wi Zamiast tego należy użyć $smarty->getTemplateVars.

+0

Czy to nie wystarczy, aby ją zobaczyć, ale nie ma wartości t null? Co jeśli null jest właściwym zadaniem? –

+0

W tym przypadku zachowanie powinno być następujące: "jeśli wartość nie jest ustawiona (zerowa), ustaw domyślną wartość." Także konwerter isset() służy do sprawdzania wartości zwracanej przez funkcję, jednak można po prostu sprawdzić samą wartość. Dzięki Andy. – GloryFish

+0

get_template_vars() służy do zwracania wartości NULL w przypadku nieistniejących zmiennych. – Andy

0

Dość, że można zrobić:

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

To nie działa z Smarty 3. Pojawia się błąd "Nie można użyć obiektu typu Smarty jako tablicy" – AbcAeffchen

1

get_template_vars() zwróci null, jeśli nie ustawiono zmienną, więc można zrobić

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

jednak, że kontrola nie powiedzie się, jeśli masz zmienna przypisana, ale ustawiona jako null, w takim przypadku możesz wykonać

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