1
我有一個smarty模板,它具有一個名爲「survey」的自定義php類的變量集。該對象有一個名爲「recipientName」的成員變量。當我用下面的代碼打印出變量:獲取smarty變量數據成員的子串
{$survey->recipientName}
它工作正常。正如人們所期望的那樣,收件人的名字被打印出來。但是,如果我嘗試將它傳遞給一個函數,它似乎並不正確。看看下面的代碼片段:
{if substr($survey->recipientName,0,3) eq 'Bob'}
Hello Bob
{else}
You are not Bob
{/if}
此段代碼將始終打印出「你是不是鮑勃」,即使RECIPIENTNAME設置爲「鮑勃·史密斯」。作爲概念證明,以下內容按預期執行:
{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」。我錯過了什麼嗎?
沒關係,這裏有幾個被忽視的問題。子字符串失敗,因爲我在錯誤的地方阻止了我的數據塊,並且調查對象不在範圍內。 *插入頭撞牆在這裏*。轉讓問題是由於價值附近的報價引起的。將其更改爲{assign var =「recipname」value = $ survey-> recipientName}修復了它。 – 2011-01-19 05:12:26