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