Столкнулся с такой вещью: smarty воспринимает пустую строку точно также как и NULL.
Пример:
{if $val != NULL }not null{else}null{/if}
Если $val - NULL или $val - '', то результатом будет строка "null"
Можно ли это как-то побороть?
!= смотрит на значение, тип не сравнивается, насколько я помню, и Null,0 и пустая строка в этом случае одно и тоже.
!== - проверяет на тождественность, не знаю, может ли смарти с ним работать.