2011-01-19 39 views
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」。我錯過了什麼嗎?

+0

沒關係,這裏有幾個被忽視的問題。子字符串失敗,因爲我在錯誤的地方阻止了我的數據塊,並且調查對象不在範圍內。 *插入頭撞牆在這裏*。轉讓問題是由於價值附近的報價引起的。將其更改爲{assign var =「recipname」value = $ survey-> recipientName}修復了它。 – 2011-01-19 05:12:26

回答

0

子串問題是一個非問題,一個簡單的定位錯誤。

但是,轉讓問題是由於價值附近的報價引起的。將其更改爲{assign var =「recipname」value = $ survey-> recipientName}修復了它。