PHP var_dump () gibi Smarty Değişkenleri Hata Ayıklama


164

Bir şablonun içinde bazı değişkenler var ve onları nereye atadığımı bilmiyorum. Belirli bir değişkenin içinde ne olduğunu bilmek gerekir; mesela smarty'de bir değişkenim var diyelim member. Ben denedim {debug}ama işe yaramadı ve hiçbir pop-up gösterildi.

var_dump()Şablonların içindeki gibi bir şeyi kullanarak smarty değişkenlerini nasıl çıktı / hata ayıklama yapabilirim ?

Yanıtlar:


330

{php}Etiketleri kullanabilirsiniz

Yöntem 1 (Smarty 3.1 veya sonraki sürümlerde çalışmaz):

{php}

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

{/php}

Yöntem 2:

{$var|@print_r}

Yöntem 3:

{$var|@var_dump}

Php etiketleri başvurmak iyi bir uygulama değildir ve ideal güvenlik nedenlerinden dolayı devre dışı bırakılmalıdır. @debug_print_var (Chris'in cevabına bakınız) çok daha iyi bir çözümdür.
— thelem

1
Smarty'nin en son sürümü {php}...{/php}etiketleri devre dışı bırakarak , Yöntem 2 veya 3 daha iyi seçeneklerdir.
— Luke Stevenson

1
<pre> etiketleriyle çevrelerseniz çıktı daha da iyi görünür. Yukarıdaki yöntemler en iyisidir.
— Alexander Kludt

2
Sonunda fazladan bir yankı olmasını önlemek için çıktıyı smarty'ye döndürmesi için print_r () öğesine ek bir parametre ekleyin: {$ var | @print_r: true}
— ivanhoe

120

Bu çalışmalı:

{$var|@print_r}

veya

{$var|@var_dump}

@ Dizilerin akıllıca değiştiriciyi her şeye karşı çalıştırmasını sağlamak için gereklidir, aksi takdirde her öğe için yapar.


8
Seçilen cevabından çok daha iyi.
— Damien

seçilen cevaptan daha mı iyi? srsly? seçilen cevabın da bu çözümleri var, ancak eski smarty sürümleri için sadece bir tane daha içeriyor, bu yüzden seçilen bir
— xD'den

24

Değeri için, değişkeniniz için -esk bir çıktı {$varname|@debug_print_var}elde etmek için yapabilirsiniz var_dump().


Bazen değişkenin ne olduğundan ve birçok kez emin değilseniz @print_rve @var_dumpişe yaramadı (örneğin x-cart'da), ancak @debug_print_varçıktı oradaydı.
— skobaljic

Çok teşekkürler! Cevabınız benim için çalışan tek şey.
— Tana

10

.tpl dosyasında {debug} kullanın ve kaynak kodunuza bakın


3
Güzel. Bu aslında benim için bir açılır pencere yarattı, bu yüzden kaynağa bakmak zorunda kalmadım. Benim pop-up engelleyici olsa devre dışı bırakmak zorunda kaldı.
— Hobo


5

Smarty Oturumu ile deneyin:

{$smarty.session|@debug_print_var}

veya

{$smarty.session|@print_r}

Çıktınızı güzelleştirmek için <pre> </pre>etiketler arasında kullanın


2

Daha güzel bir şey istiyorsanız tavsiye ederim

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

Sadece yerine yourvariable Değişkeniniz tarafından


1

bunu deneyin .... $debugging Smarty'de TRUE olarak ayarlayın .


emin biliyorum, ama bunu çekirdek php dosyalarını değiştirmeden yapmalıyım
— streetparade

1

Prestashop 1.6.x'te smarty'de hata ayıklamak için:

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

{ppp($variable)} -> debug only

Diğer bir yararlı hata ayıklama etiketi:

{debug}


0

Smarty'de |(tek boru hattı operatörü) kullanarak bunu kullanabileceğiniz yerleşik değiştirici vardır . Bunun gibi {$varname|@print_r}değeriprint_r($php_variable)


0

<script>console.log({$varname|@json_encode})</script>Konsola oturum açmak için kullanmayı tercih ederim .


0

{$variable|@debug_print_var nofilter}ve " <pre>" etiketi eklemenize gerek yok

{$variable|var_dump}debug_print_varnesnede özel değişken göstermediği için size daha fazla (ancak daha kötü biçimlendirme) göster !

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.