Как отлаживать переменные в Smarty, как в PHP-дампе var()


У меня есть некоторые переменные внутри шаблона, и я не знаю, где я их назначил. Мне нужно знать, что находится внутри определенной переменной; например, скажем, у меня есть переменная в smarty под названием member. Я попробовал с {debug}, но это не сработало, и всплывающее окно не появилось.

Как я могу выводить/отлаживать переменные smarty, используя что-то вроде var_dump() внутри шаблонов?

Author: Nathaniel Ford, 2010-03-12

11 answers

Вы можете использовать теги {php}

Способ 1 (не будет работать в Smarty 3.1 или более поздней версии):

{php}

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

{/php}

Способ 2:

{$var|@print_r}

Способ 3:

{$var|@var_dump}

Дайте мне знать, если это поможет.

 285
Author: pinaki, 2014-07-07 11:07:04

Это должно сработать:

{$var|@print_r}

Или

{$var|@var_dump}

@ необходим для массивов, чтобы заставить smarty запускать модификатор для всего объекта, в противном случае он делает это для каждого элемента.

 111
Author: Tom Haigh, 2011-11-28 11:01:15

Для чего бы это ни стоило, вы можете сделать {$varname|@debug_print_var}, чтобы получить var_dump()-образный вывод для вашей переменной.

 22
Author: Chris, 2013-09-17 20:03:51

Просто используйте {debug} в своем .tpl и посмотрите на свой исходный код

 8
Author: david, 2011-04-28 12:10:22

В новом Smarty это:

<pre>
{var_dump($variable)}
</pre>
 4
Author: Alexander Zakusilo, 2017-03-06 19:46:42

Попробуйте с помощью сеанса Smarty:

{$smarty.session|@debug_print_var}

Или

{$smarty.session|@print_r}

Чтобы украсить свой вывод, используйте его между тегами <pre> </pre>

 4
Author: karadayi, 2017-07-02 10:45:30

Если вы хотите что-то более красивое, я бы посоветовал

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

Просто замените вашу переменную на вашу переменную

 2
Author: Bastilol, 2017-11-28 10:17:50

Попробуйте это.... Установите $debugging в значение TRUE в Smarty.

 1
Author: RubyDubee, 2010-03-12 09:54:33

В smarty V3 вы можете использовать это

{var_dump($variable)}

 1
Author: Awais fiaz, 2018-02-15 12:12:25

В smarty есть встроенный модификатор, который вы можете использовать с помощью | (оператор одного конвейера). Как это {$varname|@print_r} выведет значение как print_r($php_variable)

 0
Author: Pranav Bhatt, 2014-01-09 10:19:30

Для отладки в smarty в prestashop 1.6.x:

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

{ppp($variable)} -> debug only

Еще один полезный тег отладки:

{debug}
 0
Author: Aurelink, 2017-06-26 13:09:57