【发布时间】:2011-01-26 18:26:39
【问题描述】:
我在模板中有一些变量,但我不知道我将它们分配在哪里。我需要知道特定变量中的内容;例如,假设我在 smarty 中有一个名为 member 的变量。我尝试使用{debug},但它不起作用,并且没有显示弹出窗口。
如何在模板中使用 var_dump() 之类的东西输出/调试 smarty 变量?
【问题讨论】:
标签: php templates debugging smarty
我在模板中有一些变量,但我不知道我将它们分配在哪里。我需要知道特定变量中的内容;例如,假设我在 smarty 中有一个名为 member 的变量。我尝试使用{debug},但它不起作用,并且没有显示弹出窗口。
如何在模板中使用 var_dump() 之类的东西输出/调试 smarty 变量?
【问题讨论】:
标签: php templates debugging smarty
你可以使用{php}标签
方法 1(在 Smarty 3.1 或更高版本中不起作用):
{php}
$var =
$this->get_template_vars('var');
var_dump($var);
{/php}
方法二:
{$var|@print_r}
方法三:
{$var|@var_dump}
【讨论】:
{php}...{/php} 标签,方法 2 或 3 是更好的选择。
标签包围它,输出看起来会更好。以上方法是最好的。
{$var|@dump},甚至不需要用<pre></pre> 包装。 {$var|dump} 在 Smarty 3 上的工作原理相同。
这应该可行:
{$var|@print_r}
或
{$var|@var_dump}
数组需要 @ 以使 smarty 对整个事物运行修饰符,否则它会为每个元素执行此操作。
【讨论】:
对于它的价值,您可以通过 {$varname|@debug_print_var} 为您的变量获取 var_dump()-esque 输出。
【讨论】:
@print_r 和@var_dump 不起作用(例如在x-cart 中),但@debug_print_var 输出在那里。
只需在您的 .tpl 中使用 {debug} 并查看您的源代码
【讨论】:
在新的 Smarty 中是:
<pre>
{var_dump($variable)}
</pre>
【讨论】:
试试 Smarty Session:
{$smarty.session|@debug_print_var}
或
{$smarty.session|@print_r}
为了美化你的输出,在<pre> </pre>标签之间使用它
【讨论】:
试试这个 .... 在 Smarty 中将 $debugging 设置为 TRUE。
【讨论】:
在 prestashop 1.6.x 中调试 smarty :
{ddd($variable)} -> debug and die
{ppp($variable)} -> debug only
另一个有用的调试标签:
{debug}
【讨论】:
如果你想要更漂亮的东西,我会建议
{"<?php\n\$data =\n"|@cat:{$yourvariable|@var_export:true|@cat:";\n?>"}|@highlight_string:true}
只需将 yourvariable 替换为您的变量
【讨论】:
在 smarty V3 中你可以使用这个
{var_dump($variable)}
【讨论】:
{$variable|@debug_print_var nofilter} 并且您不需要添加“<pre>”标签
{$variable|var_dump} 显示更多(但格式更差),因为debug_print_var 未在对象中显示私有变量!
【讨论】:
在 smarty 中有内置的修饰符,您可以使用 |(单个管道运算符)来使用它。像这样{$varname|@print_r} 会将值打印为print_r($php_variable)
【讨论】:
我更喜欢使用<script>console.log({$varname|@json_encode})</script> 登录控制台。
【讨论】: