Comment déboguer des Variables dans Smarty comme dans PHP var dump()

J'ai quelques variables dans un modèle et je ne sais pas où je les ai assignées. J'ai besoin de savoir ce qui est à l'intérieur d'une variable particulière; par exemple, disons que j'ai une variable dans smarty appelée member. J'ai essayé avec {debug} mais cela n'a pas fonctionné, et aucune fenêtre contextuelle n'a été affichée.

Comment puis-je sortir / déboguer des variables smarty en utilisant quelque chose comme var_dump() à l'intérieur des modèles?

141
demandé sur Nathaniel Ford 2010-03-12 12:50:18

11 réponses

Vous pouvez utiliser les balises {php}

Méthode 1 (ne fonctionne pas dans Smarty 3.1 ou version ultérieure):

{php}

$var =
$this->get_template_vars('var');
var_dump($var);

{/php}

Méthode 2:

{$var|@print_r}

Méthode 3:

{$var|@var_dump}

Faites-moi savoir si cela aide.

285
répondu pinaki 2014-07-07 11:07:04

Cela devrait fonctionner:

{$var|@print_r}

Ou

{$var|@var_dump}

Le @ est nécessaire pour les tableaux pour que smarty exécute le modificateur contre le tout, sinon il le fait pour chaque élément.

111
répondu Tom Haigh 2011-11-28 11:01:15

Pour ce que ça vaut, vous pouvez faire {$varname|@debug_print_var} pour obtenir une sortie var_dump()-esque pour votre variable.

22
répondu Chris 2013-09-17 20:03:51

Il suffit d'utiliser {debug} dans votre .tpl et regardez votre code source

8
répondu david 2011-04-28 12:10:22

Dans new Smarty c'est:

<pre>
{var_dump($variable)}
</pre>
4
répondu Alexander Zakusilo 2017-03-06 19:46:42

Essayez avec la Session Smarty:

{$smarty.session|@debug_print_var}

Ou

{$smarty.session|@print_r}

Pour embellir votre sortie, utilisation entre <pre> </pre> balises

4
répondu karadayi 2017-07-02 10:45:30

Si vous voulez quelque chose de plus joli, je conseillerais

{"<?php\n\$data =\n"|@cat:{$yourvariable|@var_export:true|@cat:";\n?>"}|@highlight_string:true}

Il suffit de remplacer yourvariable par votre variable

2
répondu Bastilol 2017-11-28 10:17:50

Essayez ceci .... Définissez $debugging sur TRUE dans Smarty.

1
répondu RubyDubee 2010-03-12 09:54:33

Dans smarty V3 vous pouvez utiliser ceci

{var_dump($variable)}

1
répondu Awais fiaz 2018-02-15 12:12:25

Dans smarty, il y a un modificateur intégré que vous pouvez utiliser en utilisant | (opérateur de pipeline unique). Comme ceci {$varname|@print_r} imprimera la valeur comme print_r($php_variable)

0
répondu Pranav Bhatt 2014-01-09 10:19:30

Pour déboguer dans smarty dans prestashop 1.6.x:

{ddd($variable)} -> debug and die

{ppp($variable)} -> debug only

Une autre balise de débogage utile:

{debug}
0
répondu Aurelink 2017-06-26 13:09:57