2011-01-19 2 views
1

У меня есть шаблон smarty, который имеет набор переменных, который является обычным классом php, называемым «опросом». Этот объект имеет переменную-член, называемую «имя получателя». Когда я распечатываю переменную, используя следующий код:получение подстроки элемента данных переменной smarty

{$survey->recipientName} 

это прекрасно работает. Имя получателя распечатывается, как и следовало ожидать. Однако, если я попытаюсь передать это в функцию, это, похоже, не работает правильно. Рассмотрим следующий фрагмент кода:

{if substr($survey->recipientName,0,3) eq 'Bob'} 
    Hello Bob 
{else} 
    You are not Bob 
{/if} 

Этот фрагмент кода всегда будет печатать «Вы не Боб», даже если имя_получателя установлен в положение «Боб Смит». В качестве доказательства концепции выполняются, как и ожидалось:

{if substr("Bob Smith",0,3) eq 'Bob'} 
    Hello Bob 
{else} 
    You are not Bob 
{/if} 

Вышеприведенное распечатает «Hello Bob».

Аналогичным образом, я заметил странное поведение и в других местах. Возьмем, например, следующий фрагмент кода:

{assign var="recipname" value="$survey->recipientName"} 

Это присвоит переменной recipname к значению «-> имя_получателя». Я что-то упускаю?

+0

Ничего страшного, здесь есть несколько проблем. Подстрока не срабатывала, потому что у меня был блок в неправильном месте, и объект съемки не был в области. * вставлять head удары на стену здесь *. Проблема присвоения была вызвана котировками вокруг значения. Меняя его на {assign var = "recipname" value = $ survey-> recipientName}, исправил его. –

+0

Вы можете ответить сами и принять, чтобы закрыть этот вопрос – periklis

ответ

0

Проблема с подстрокой была не проблема, простая ошибка позиционирования.

Однако проблема назначения обусловлена ​​котировками вокруг значения. Меняя его на {assign var = "recipname" value = $ survey-> recipientName}, исправил его.

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