How to Debug Variables in Smarty like in PHP var_dump()
Solution 1
You can use {php}
tags
Method 1 (won't work in Smarty 3.1 or later):
{php}
$var =
$this->get_template_vars('var');
var_dump($var);
{/php}
Method 2:
{$var|@print_r}
Method 3:
{$var|@var_dump}
Solution 2
This should work:
{$var|@print_r}
or
{$var|@var_dump}
The @ is needed for arrays to make smarty run the modifier against the whole thing, otherwise it does it for each element.
Solution 3
For what it's worth, you can do {$varname|@debug_print_var}
to get a var_dump()
-esque output for your variable.
Solution 4
just use {debug} in your .tpl and look at your sourcecode
Solution 5
In new Smarty it is:
<pre>
{var_dump($variable)}
</pre>
Related videos on Youtube
streetparade
Updated on April 02, 2020Comments
-
streetparade about 4 years
I have some variables inside a template and I don't know where I assigned them. I need to know what is inside a particular variable; for instance, say I have a variable in smarty called
member
. I tried with{debug}
but it didn't work, and no popup was shown.How can I output/debug smarty variables using something like
var_dump()
inside the templates? -
streetparade about 14 yearssure i know that, but i need to do it without modding the core php files
-
Hobo almost 12 yearsNice. This actually created a pop-up window for me, so I didn't have to look at the source. Had to disable my pop-up blocker though.
-
Damien over 11 yearsA lot better then the chose answer.
-
thelem over 11 yearsResorting to php tags is not good practice and ideally they should be disabled for security reasons anyway. @debug_print_var (see answer from Chris) is a much better solition.
-
Luke Stevenson almost 11 yearsWith the latest version of Smarty disabling the
{php}...{/php}
tags, Methods 2 or 3 are better options. -
skobaljic over 10 yearsSometimes you are not sure what the variable is and many times
@print_r
and@var_dump
did not work (in x-cart for example), but@debug_print_var
output was there. -
Alexander Kludt over 10 yearsOutput looks even better if you surround it with <pre> tags. Methods above are the best.
-
ivanhoe over 9 yearsAdd an additional param to print_r() to make it return the output to smarty, to avoid an extra echo at the end: {$var|@print_r:true}
-
Tana over 6 yearsThanks so much! Your answer is the only that works form me.
-
oliiix about 6 yearsbetter then the chosen answer? srsly? the chosen answer has those solutions in it too but just contains one more for older smarty versions, so I cannot really get how you could say it's better than the chosen one xD
-
Sharak over 2 yearsMost clean view of the variable gives
{$var|@dump}
and it doesn't even need to be wrapped with<pre></pre>
.{$var|dump}
works just the same on Smarty 3.