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?
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. –
Vous voudrez peut-être répondre par vous-même et accepter, de fermer cette question – periklis