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

时间:2010-03-12 09:50:18

标签: php templates debugging smarty

我在模板中有一些变量,我不知道我在哪里分配它们。我需要知道特定变量中的内容;例如,假设我在smarty中有一个名为member的变量。我尝试使用{debug},但它不起作用,并且没有显示弹出窗口。

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

13 个答案:

答案 0 :(得分:299)

您可以使用{php}标记

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

{php}

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

{/php}

方法2:

{$var|@print_r}

方法3:

{$var|@var_dump}

如果有帮助,请告诉我。

答案 1 :(得分:114)

这应该有效:

{$var|@print_r}

{$var|@var_dump}

数组需要@才能使mody对整个事物运行修饰符,否则它会为每个元素执行。

答案 2 :(得分:23)

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

答案 3 :(得分:9)

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

即可

答案 4 :(得分:6)

在新的Smarty中,它是:

<pre>
{var_dump($variable)}
</pre>

答案 5 :(得分:4)

尝试使用Smarty会话:

{$smarty.session|@debug_print_var}

{$smarty.session|@print_r}

要美化您的输出,请在<pre> </pre>标记

之间使用它

答案 6 :(得分:2)

如果你想要更漂亮的东西我会建议

{"<?php\n\$data =\n"|@cat:{$yourvariable|@var_export:true|@cat:";\n?>"}|@highlight_string:true}

只需用变量替换你的变量

答案 7 :(得分:1)

试试这个......在Smarty中将$debugging设为TRUE。

答案 8 :(得分:1)

在prestashop 1.6.x中使用smarty进行调试:

{debug}

另一个有用的调试标记:

<p:commandButton id="btnAlterar" value="Alterar" action="#{impressoraMB.alterar}" update=":form:tab" onclick="PF('alterarImpre').hide()"
                oncomplete="PF('form').hide(); #{impressoraMB.impressora}" ajax="true" process="@form" title="Alterar">

答案 9 :(得分:0)

在smarty中,内置修饰符可以通过使用|(单个管道运算符)来使用它。像这样{$varname|@print_r}会将值打印为print_r($php_variable)

答案 10 :(得分:0)

在smarty V3中你可以使用这个

{var_dump($variable)}

答案 11 :(得分:0)

我更喜欢使用<script>console.log({$varname|@json_encode})</script>登录到控制台。

答案 12 :(得分:0)

{$variable|@debug_print_var nofilter},您无需添加“ <pre>”标签

{$variable|var_dump}向您展示了更多(但格式较差),因为debug_print_var没有在对象中显示私有变量!