179 votes

Comment déboguer les variables dans Smarty comme en 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 que contient 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 popup n'a été affichée.

Comment puis-je sortir/déboguer les variables smarty en utilisant quelque chose comme var_dump() dans les modèles ?

359voto

pinaki Points 2066

Vous pouvez utiliser {php} tags

Méthode 1 (ne fonctionne pas avec Smarty 3.1 ou plus) :

{php}

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

{/php}

Méthode 2 :

{$var|@print_r}

Méthode 3 :

{$var|@var_dump}

0 votes

Le recours aux balises php n'est pas une bonne pratique et, idéalement, elles devraient être désactivées pour des raisons de sécurité. @debug_print_var (voir la réponse de Chris) est une bien meilleure solution.

1 votes

Avec la dernière version de Smarty, la désactivation de l'option {php}...{/php} les méthodes 2 ou 3 sont de meilleures options.

1 votes

Le résultat est encore meilleur si vous l'entourez de balises <pre>. Les méthodes ci-dessus sont les meilleures.

121voto

Tom Haigh Points 32314

Cela devrait fonctionner :

{$var|@print_r}

o

{$var|@var_dump}

Le @ est nécessaire pour les tableaux afin que smarty exécute le modificateur sur l'ensemble du tableau, sinon il le fait pour chaque élément.

8 votes

Bien mieux que la réponse choisie.

1 votes

Mieux que la réponse choisie ? srsly ? la réponse choisie a ces solutions dans elle aussi mais contient juste un plus pour les anciennes versions de smarty, donc je ne peux pas vraiment comprendre comment vous pourriez dire qu'il est mieux que la réponse choisie xD

28voto

Chris Points 340

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

0 votes

Parfois, vous n'êtes pas sûr de ce qu'est la variable et bien souvent @print_r y @var_dump ne fonctionnait pas (dans x-cart par exemple), mais @debug_print_var La sortie était là.

0 votes

Merci beaucoup ! Votre réponse est la seule qui fonctionne pour moi.

12voto

david Points 39

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

3 votes

Joli. Ça a créé une fenêtre pop-up pour moi, donc je n'ai pas eu à regarder la source. J'ai dû désactiver mon bloqueur de fenêtres pop-up.

2voto

RubyDubee Points 1425

Essayez ceci .... Définir $debugging à TRUE dans Smarty.

0 votes

Bien sûr, je le sais, mais je dois le faire sans modifier les fichiers php de base.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X