我在模板中有一些变量,但是我不知道它们被赋值的位置。我需要知道一个特定变量中包含了什么内容;比如说,我有一个smarty变量叫做member
。我尝试使用{debug}
,但是没有弹出窗口显示。
我该如何在模板中输出/调试像var_dump()
这样的smarty变量?
你可以使用{php}
标签
方法1(在Smarty 3.1或更高版本中无法使用):
{php}
$var =
$this->get_template_vars('var');
var_dump($var);
{/php}
方法二:
{$var|@print_r}
方法三:
{$var|@var_dump}
这应该可以工作:
{$var|@print_r}
或者{$var|@var_dump}
在数组中,需要使用 @ 符号才能让Smarty运行修改器(modifier)作用于整个数组,否则会对每个元素进行修改。
不管价值如何,您可以使用{$varname|@debug_print_var}
来获得类似于var_dump()
的输出结果来查看您的变量。
@print_r
和 @var_dump
不起作用(例如在 x-cart 中),但是 @debug_print_var
的输出是存在的。 - skobaljic只需在您的.tpl文件中使用{debug}并查看您的源代码
<pre>
{var_dump($variable)}
</pre>
尝试使用Smarty Session:
{$smarty.session|@debug_print_var}
{$smarty.session|@print_r}
<pre> </pre>
标签之间。尝试这个...在Smarty中将$debugging
设置为TRUE。
我更喜欢使用<script>console.log({$varname|@json_encode})</script>
来记录控制台日志。
console.log('code');
中需要添加单引号。 - undefined{"<?php\n\$data =\n"|@cat:{$yourvariable|@var_export:true|@cat:";\n?>"}|@highlight_string:true}
只需将yourvariable替换为您的变量即可
为了更好的显示:
{$var|@dump}
{php}...{/php}
标签,方法2或3是更好的选择。 - Luke Stevenson{$var|@dump}
,甚至不需要用<pre></pre>
包装。在 Smarty 3 上,{$var|dump}
的效果也是一样的。 - Sharak