web-dev-qa-db-fra.com

Comment déboguer des variables dans Smarty comme dans PHP var_dump ()

J'ai des variables à l'intérieur d'un modèle et je ne sais pas où je les ai affectées. J'ai besoin de savoir ce qu'il y a dans 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 générer/déboguer des variables intelligentes en utilisant quelque chose comme var_dump() dans les modèles?

144
streetparade

Vous pouvez utiliser les balises {php}

Méthode 1 (ne fonctionnera pas dans Smarty version 3.1 ou 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.

294
pinaki

Cela devrait fonctionner:

{$var|@print_r}

ou 

{$var|@var_dump}

Le @ est nécessaire pour que les tableaux obligent smarty à exécuter le modificateur, sinon il le fait pour chaque élément.

112
Tom Haigh

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

23
Chris

utilisez simplement {debug} dans votre fichier .tpl et regardez votre code source

9
david

Dans le nouveau Smarty c'est:

<pre>
{var_dump($variable)}
</pre>
5

Essayez avec la session Smarty:

{$smarty.session|@debug_print_var}

ou 

{$smarty.session|@print_r}

Pour embellir votre sortie, utilisez-la entre les balises <pre> </pre>

4
karadayi

Si vous voulez quelque chose de plus joli, je le conseillerais

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

il suffit de remplacer yourvariable par votre variable

2
Bastilol

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

1
RubyDubee

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

0
Pranav Bhatt

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

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

{ppp($variable)} -> debug only

Une balise de débogage utile utile: 

{debug}
0
Aurelink