У меня есть шаблон 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 к значению «-> имя_получателя». Я что-то упускаю?
Ничего страшного, здесь есть несколько проблем. Подстрока не срабатывала, потому что у меня был блок в неправильном месте, и объект съемки не был в области. * вставлять head удары на стену здесь *. Проблема присвоения была вызвана котировками вокруг значения. Меняя его на {assign var = "recipname" value = $ survey-> recipientName}, исправил его. –
Вы можете ответить сами и принять, чтобы закрыть этот вопрос – periklis