2011-01-21 7 views

Répondre

5

Le meilleur moyen est probablement de créer vos propres plugins et modifiers pour Smarty. Pour votre exemple spécifique, Smarty a déjà un strip_tags modifier. Utilisez-le comme ceci:

{$a|strip_tags} 
0

Tout l'intérêt des systèmes de création de modèles est d'abstraire la création de vues à partir du langage sous-jacent. En d'autres termes, vos variables doivent être préparées pour être affichées avant d'être transmises à un moteur de modélisation, et vous ne devez utiliser aucune fonction PHP dans le modèle lui-même.

+1

Donc, je Est-ce impossible de le faire dans Smarty? Je reformule les données et je ne pense pas que je devrais le transmettre en tant que variable distincte. Dans un scénario, j'ai besoin des balises HTML de $ a; dans un autre scénario, je ne le fais pas. – StackOverflowNewbie

+0

Je ne vous dirai pas si c'est possible ou pas (cela fait quelque temps que je travaillais avec Smarty). Mon point est, ce n'est pas quelque chose que vous devriez faire. – Mchl

+1

Joshua Burns: généralement pour le confort des développeurs.Sinon, nous ferions tout notre codage dans l'assemblage. – Mchl

0

Smarty a déjà un modificateur de langage pour cela.

{$a|strip_tags}

Vous n'avez pas besoin de fonctions autochtones comme il déjà intégré dans le système de plug-in

http://www.smarty.net/docsv2/en/language.modifier.strip.tags.tpl

autres ici:

http://www.smarty.net/docsv2/en/language.modifiers.tpl

+0

@StackOverflowNewbie: Maintenant, je peux vous dire: c'est possible;) – Mchl

+0

Rien n'est impossible !! (En dehors de rendre la femme heureuse ... c'est compliqué): p – RobertPitt

17

Vous pouvez utiliser un php fonctionner dans un modèle smarty de la façon suivante:

{$a|php_function_name} 

ou

{$a|php_function_name:param2:param3:...} 

Dans le second exemple, vous pouvez spécifier des paramètres supplémentaires pour la fonction php (le premier est toujours $ a dans notre cas). Par exemple: {$a|substr:4:3} devrait résulter quelque chose comme substr($_tpl_vars['a'],4,3); lorsque smarty le compile.

+2

{$ a | php_function_name: param1: param3: ...} devrait être {$ a | php_function_name: param2: param3: ...} –

+0

Oui, tu as raison. Merci – Zsolti

6

Très bonne question, il m'a fallu du temps pour comprendre complètement celui-ci.

appeler une fonction, passer un seul paramètre:

{"this is my string"|strtoupper} 
// same as: 
strtoupper("this is my string") 

{$a:strtoupper} 
// same as: 
strtoupper($a) 

appeler une fonction, en passant plusieurs paramètres

{"/"|str_replace:"-":"this is my string"} 
// same as: 
str_replace("/", "-", "this is my string") 

{"/"|str_replace:"-":$a} 
// same as: 
str_replace("/", "-", $a) 
+0

Merci pour cette solution. – Thoman

+0

Et qu'en est-il de ne pas passer de paramètres? –

+1

@Hrvoje Golcic - Just {my_function}: http://www.smarty.net/docs/fr/language.function.function.tpl –

3

Ou vous pouvez utiliser ceci: (fonction d'appel directement)

{rand()} 
+1

Ceci est une très bonne option et mérite plus de préavis. –

+0

De plus, vous pouvez non seulement appeler ainsi des fonctions php natives mais aussi des fonctions que vous avez déclarées dans votre code php sans l'enregistrer en tant que plugin (testé pour Smarty 3). –

Questions connexes