获取smarty变量数据成员的子字符串

时间:2011-01-19 03:33:58

标签: php smarty

我有一个smarty模板,它有一个变量集,它是一个名为“survey”的自定义php类。该对象有一个名为“recipientName”的成员变量。当我使用以下代码打印出变量时:

{$survey->recipientName}

它工作正常。正如人们所料,收件人的姓名会被打印出来。但是,如果我尝试将其传递给函数,它似乎无法正常工作。请使用以下代码段:

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

即使recipientName设置为“Bob Smith”,此代码段也会始终打印出“您不是Bob”。作为概念证明,以下内容按预期执行:

{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分配给值“ - > recipientName”。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

子字符串问题是一个非问题,一个简单的定位错误。

然而,分配问题是由于价值附近的报价所致。将其更改为{assign var =“recipname”value = $ survey-> recipientName}修复它。