Bagaimana Debug Variabel di Smarty seperti di PHP var_dump ()


163

Saya memiliki beberapa variabel di dalam template dan saya tidak tahu di mana saya menugaskan mereka. Saya perlu tahu apa yang ada di dalam variabel tertentu; misalnya, katakan saya memiliki variabel dalam smarty disebut member. Saya mencoba {debug}tetapi tidak berhasil, dan tidak ada popup yang ditampilkan.

Bagaimana saya bisa menampilkan / men-debug variabel smarty menggunakan sesuatu seperti var_dump()di dalam templat?

Jawaban:


328

Anda dapat menggunakan {php}tag

Metode 1 (tidak akan berfungsi di Smarty 3.1 atau yang lebih baru):

{php}

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

{/php}

Metode 2:

{$var|@print_r}

Metode 3:

{$var|@var_dump}

Menggunakan tag php bukanlah praktik yang baik dan idealnya mereka harus dinonaktifkan karena alasan keamanan. @debug_print_var (lihat jawaban dari Chris) adalah solusi yang jauh lebih baik.
themem

1
Dengan Smarty versi terbaru menonaktifkan {php}...{/php}tag, Metode 2 atau 3 adalah opsi yang lebih baik.
Luke Stevenson

1
Output terlihat lebih baik jika Anda mengelilinginya dengan tag <pre>. Metode di atas adalah yang terbaik.
Alexander Kludt

2
Tambahkan param tambahan ke print_r () untuk membuatnya mengembalikan output ke smarty, untuk menghindari gema tambahan di akhir: {$ var | @print_r: true}
ivanhoe

120

Ini seharusnya bekerja:

{$var|@print_r}

atau

{$var|@var_dump}

@ Diperlukan untuk array agar smarty menjalankan modifier terhadap semua hal, jika tidak, ia melakukannya untuk setiap elemen.


8
Jauh lebih baik daripada jawaban yang dipilih.
Damien

lebih baik dari jawaban yang dipilih? srsly? jawaban yang dipilih memiliki solusi di dalamnya juga, tetapi hanya berisi satu lagi untuk versi smarty yang lebih tua, jadi saya tidak bisa benar-benar mengerti bagaimana Anda bisa mengatakan itu lebih baik daripada yang dipilih xD
oliiix

24

Untuk apa nilainya, Anda dapat melakukan {$varname|@debug_print_var}untuk mendapatkan var_dump()output -queque untuk variabel Anda.


Kadang-kadang Anda tidak yakin apa variabelnya dan berkali-kali @print_rdan @var_dumptidak berfungsi (dalam x-cart misalnya), tetapi @debug_print_varhasilnya ada di sana.
skobaljic

Terima kasih banyak! Jawaban Anda adalah satu-satunya yang berfungsi membentuk saya.
Tana

10

cukup gunakan {debug} di .tpl Anda dan lihat kode sumber Anda


3
Bagus. Ini sebenarnya menciptakan jendela pop-up untuk saya, jadi saya tidak perlu melihat sumbernya. Harus menonaktifkan pemblokir pop-up saya.
Hobo


5

Cobalah dengan Sesi Smarty:

{$smarty.session|@debug_print_var}

atau

{$smarty.session|@print_r}

Untuk mempercantik hasil Anda, gunakan di antara <pre> </pre>tag


2

Jika Anda menginginkan sesuatu yang lebih cantik saya sarankan

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

hanya mengganti yourvariable oleh variabel Anda


1

coba ini .... Setel $debugging ke TRUE di Smarty.


yakin saya tahu itu, tetapi saya harus melakukannya tanpa modding file php inti
streetparade

1

Untuk debug di smarty di prestashop 1.6.x:

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

{ppp($variable)} -> debug only

Tag debug bermanfaat lainnya:

{debug}


0

Di smarty ada modifier bawaan Anda bisa menggunakannya dengan menggunakan |(operator pipa tunggal). Seperti ini {$varname|@print_r}akan mencetak nilai sebagaiprint_r($php_variable)


0

Saya lebih suka menggunakan <script>console.log({$varname|@json_encode})</script>untuk masuk ke konsol.


0

{$variable|@debug_print_var nofilter}dan Anda tidak perlu menambahkan <pre>tag " "

{$variable|var_dump}menampilkan lebih banyak (tetapi lebih buruk memformat) karena debug_print_vartidak menampilkan variabel pribadi di objek!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.