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.