如何在PHP中调试变量如PHP中的var_dump()

str*_*ade 157 php debugging templates smarty

我在模板中有一些变量,我不知道我在哪里分配它们.我需要知道特定变量中的内容; 例如,假设我在smarty中有一个变量叫member.我试过{debug}但它没有用,也没有显示弹出窗口.

如何使用var_dump()模板内部的东西输出/调试智能变量?

pin*_*aki 318

您可以使用{php}标签

方法1(在Smarty 3.1或更高版本中不起作用):

{php}

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

{/php}
Run Code Online (Sandbox Code Playgroud)

方法2:

{$var|@print_r}
Run Code Online (Sandbox Code Playgroud)

方法3:

{$var|@var_dump}
Run Code Online (Sandbox Code Playgroud)

如果这有帮助,请告诉我.

  • 哦,是的,非常感谢,祝你有个美好的一天:-) (5认同)
  • 为print_r()添加一个额外的参数,使其返回smarty,以避免在结尾处产生额外的回声:{$ var | @print_r:true} (2认同)

Tom*_*igh 118

这应该工作:

{$var|@print_r}
Run Code Online (Sandbox Code Playgroud)

要么

{$var|@var_dump}
Run Code Online (Sandbox Code Playgroud)

数组需要@才能巧妙地针对整个事物运行修饰符,否则它会为每个元素执行.

  • 比选择的答案要好得多. (8认同)

Chr*_*ris 24

对于它的价值,您可以为变量{$varname|@debug_print_var}获取var_dump()-esque输出.


小智 9

只需在.tpl中使用{debug}并查看源代码即可

  • 尼斯.这实际上为我创建了一个弹出窗口,所以我不必查看源代码.不得不禁用我的弹出窗口阻止程序. (3认同)

Ale*_*ilo 6

在新的Smarty中它是:

<pre>
{var_dump($variable)}
</pre>
Run Code Online (Sandbox Code Playgroud)


kar*_*ayi 5

尝试使用 Smarty 会话:

{$smarty.session|@debug_print_var}
Run Code Online (Sandbox Code Playgroud)

或者

{$smarty.session|@print_r}
Run Code Online (Sandbox Code Playgroud)

要美化您的输出,请在<pre> </pre>标签之间使用它