2013-05-28 4 views
0

Я определил {CAPTURE} переменной в Smarty с помощью:Smarty - отображение Div на основании наличия или отсутствия {CAPTURE} переменной

{capture name='websitediv'} 
    //code to generate some output to be captured. 
{/capture} 

и назначен выход в шаблон переменной

{capture name='websitediv' assign='ws'} 

у меня есть условие, установленное в моем коде при этом в зависимости от того, имеет ли выше захвачена переменной значение или нет, содержимое будет показано или скрыто:

<div {if !isset($ws)} style="display:none" {/if}> 
    //else do something 
</div> 

К сожалению, последний код не работает. Независимо от того, доступна ли захваченная переменная или нет, div остается отображаемым.

ответ

0

Как и переменная PHP, существует разница между переменной Smarty, которая «не установлена», и просто имеет значение, которое выглядит пустым для человека.

В этом случае ваш блок {capture} всегда обрабатывается и всегда присваивается переменной, поэтому переменная всегда будет существовать и содержать в себе некоторое содержимое строки.

Что вам нужно проверить, это не его существование, а его содержимое - это пустая строка или, более вероятно, строка, содержащая только пробелы, которые находятся между вашими тегами Smarty.

Как и в PHP, полностью пустая строка вычисляет значение false в инструкции Smarty {if}, поэтому вы можете сказать {if !$ws}...{/if}, чтобы обнаружить это. Но вы хотите игнорировать пробелы, так что вы, вероятно, хотите, это {if !trim($ws)}...{/if}

+0

спасибо за ответ. Когда я использую trim, div теперь скрыт для всех, даже если переменная $ ws имеет контент. –

+0

ОК, мне удалось решить это, поставив блок {capture} внутри блока {strip}. Спасибо за ввод. –

Смежные вопросы