2011-01-19 5 views
1

J'ai un template smarty qui a un ensemble de variables qui est une classe php personnalisée appelée "survey". Cet objet a une variable membre appelée "recipientName". Lorsque j'imprime la variable en utilisant le code suivant:Obtenir la sous-chaîne du membre de données variables smarty

{$survey->recipientName} 

il fonctionne très bien. Le nom du destinataire est imprimé, comme on pourrait s'y attendre. Cependant, si j'essaie de transmettre cela à une fonction, cela ne semble pas fonctionner correctement. Prenez le code suivant:

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

Cet extrait sera toujours imprimer « Vous n'êtes pas Bob », même si RECIPIENTNAME est réglé sur « Bob Smith ». Comme preuve de concept, ce qui suit fonctionne comme prévu:

{if substr("Bob Smith",0,3) eq 'Bob'} 
    Hello Bob 
{else} 
    You are not Bob 
{/if} 

Ce qui précède imprimera "Hello Bob".

De même, j'ai remarqué un comportement étrange dans d'autres endroits. Par exemple, prenez l'extrait de code suivant:

{assign var="recipname" value="$survey->recipientName"} 

Cela affectera la recipname variable à une valeur "-> RECIPIENTNAME". Est-ce que je manque quelque chose?

+0

Peu importe, un couple de problèmes négligés ici. La sous-chaîne échouait parce que j'avais mon bloc au mauvais endroit, et l'objet de l'enquête n'était pas dans la portée. * insérez la tête cognant contre le mur ici *. Le problème d'attribution était dû aux citations autour de la valeur. Le changer pour {assign var = "recipname" value = $ survey-> recipientName} le corrige. –

+0

Vous voudrez peut-être répondre par vous-même et accepter, de fermer cette question – periklis

Répondre

0

Le problème de sous-chaîne était un non-problème, une erreur de positionnement simple.

Le problème d'attribution, cependant, était dû aux citations autour de la valeur. Le changer pour {assign var = "recipname" value = $ survey-> recipientName} le corrige.

Questions connexes