2011-01-19 12 views
1

"survey"というカスタムPHPクラスの変数セットを持つスマートテンプレートがあります。このオブジェクトは "recipientName"と呼ばれるメンバ変数を持っています。次のコードを使用して変数を出力すると、スマート変数データメンバーの部分文字列を取得

{$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

気にする必要はありませんが、ここでは見落とされている問題がいくつかあります。間違った場所にブロックがあり、調査対象が範囲外だったため、部分文字列が失敗していました。 *頭に壁を打つ挿入*。代入問題は、値の周りの引用符に起因していました。それを{var = "recipname" value = $ survey-> recipientName}に変更すると修正されました。 –

+0

自分で返信して同意して、この質問を閉じることができます – periklis

答えて

0

部分文字列の問題は問題ではなく、単純な位置決めエラーです。

ただし、割り当て問題は値の前後の引用符によるものです。それを{var = "recipname" value = $ survey-> recipientName}に変更すると修正されました。

関連する問題