ChatGPT解决这个技术问题 Extra ChatGPT

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

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

如何在模板中使用 var_dump() 之类的东西输出/调试 smarty 变量?


a
algorhythm

您可以使用 {php} 标记

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

{php}

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

{/php}

方法二:

{$var|@print_r}

方法三:

{$var|@var_dump}

诉诸 php 标签不是好的做法,理想情况下,出于安全原因,它们应该被禁用。 @debug_print_var(请参阅 Chris 的回答)是一个更好的解决方案。
使用最新版本的 Smarty 禁用 {php}...{/php} 标签,方法 2 或 3 是更好的选择。
如果你用
 标签包围它,输出看起来会更好。上面的方法是最好的。
                        				                   		
向 print_r() 添加一个附加参数,使其将输出返回给 smarty,以避免在末尾产生额外的回显:{$var|@print_r:true}
变量的最清晰视图给出 {$var|@dump},甚至不需要用 <pre></pre> 包装。 {$var|dump} 在 Smarty 3 上的工作原理相同。
T
Tom Haigh

这应该有效:

{$var|@print_r}

或者

{$var|@var_dump}

数组需要 @ 以使 smarty 对整个事物运行修饰符,否则它会为每个元素执行此操作。


比选择的答案好得多。
比选择的答案更好?呸呸呸?选择的答案也有这些解决方案,但只包含一个用于较旧的 smarty 版本的解决方案,所以我真的不明白你怎么能说它比选择的那个更好 xD
N
Nathaniel Ford

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


有时您不确定变量是什么,并且很多时候 @print_r@var_dump 不起作用(例如在 x-cart 中),但有 @debug_print_var 输出。
非常感谢!你的答案是唯一对我有用的。
d
david

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


好的。这实际上为我创建了一个弹出窗口,因此我不必查看源代码。不过不得不禁用我的弹出窗口阻止程序。
A
Alexander Zakusilo

在新的 Smarty 中,它是:

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

k
karadayi

试试 Smarty Session:

{$smarty.session|@debug_print_var}

或者

{$smarty.session|@print_r}

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


R
RubyDubee

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


当然我知道,但我需要在不修改核心 php 文件的情况下这样做
A
Aurelink

在 prestashop 1.6.x 中调试 smarty :

{ddd($variable)} -> debug and die

{ppp($variable)} -> debug only

另一个有用的调试标签:

{debug}

B
Bastilol

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

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

只需用你的变量替换你的变量


A
Awais fiaz

在 smarty V3 中你可以使用这个

{var_dump($variable)}


P
Peter van Sark

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


r
r_a_f

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

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


S
Saghir A. Khatri

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅