Как отлаживать переменные в Smarty, как в PHP-дампе var()
У меня есть некоторые переменные внутри шаблона, и я не знаю, где я их назначил. Мне нужно знать, что находится внутри определенной переменной; например, скажем, у меня есть переменная в smarty под названием member
. Я попробовал с {debug}
, но это не сработало, и всплывающее окно не появилось.
Как я могу выводить/отлаживать переменные smarty, используя что-то вроде var_dump()
внутри шаблонов?
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}
Дайте мне знать, если это поможет.
Это должно сработать:
{$var|@print_r}
Или
{$var|@var_dump}
@ необходим для массивов, чтобы заставить smarty запускать модификатор для всего объекта, в противном случае он делает это для каждого элемента.
Для чего бы это ни стоило, вы можете сделать {$varname|@debug_print_var}
, чтобы получить var_dump()
-образный вывод для вашей переменной.
Просто используйте {debug} в своем .tpl и посмотрите на свой исходный код
В новом Smarty это:
<pre>
{var_dump($variable)}
</pre>
Попробуйте с помощью сеанса Smarty:
{$smarty.session|@debug_print_var}
Или
{$smarty.session|@print_r}
Чтобы украсить свой вывод, используйте его между тегами <pre> </pre>
Если вы хотите что-то более красивое, я бы посоветовал
{"<?php\n\$data =\n"|@cat:{$yourvariable|@var_export:true|@cat:";\n?>"}|@highlight_string:true}
Просто замените вашу переменную на вашу переменную
Попробуйте это.... Установите $debugging
в значение TRUE в Smarty.
В smarty V3 вы можете использовать это
{var_dump($variable)}
В smarty есть встроенный модификатор, который вы можете использовать с помощью |
(оператор одного конвейера). Как это {$varname|@print_r}
выведет значение как print_r($php_variable)
Для отладки в smarty в prestashop 1.6.x:
{ddd($variable)} -> debug and die
{ppp($variable)} -> debug only
Еще один полезный тег отладки:
{debug}