कैसे स्मार्ट में डीबग चर को डीबग करें जैसे PHP var_dump () में


164

मेरे पास एक टेम्पलेट के अंदर कुछ चर हैं और मुझे नहीं पता कि मैंने उन्हें कहाँ सौंपा है। मुझे यह जानना होगा कि किसी विशेष चर के अंदर क्या है; उदाहरण के लिए, कहते हैं कि मेरे पास स्मार्टी नामक एक चर है member। मैंने कोशिश की, {debug}लेकिन यह काम नहीं किया, और कोई पॉपअप नहीं दिखाया गया था।

मैं var_dump()टेम्प्लेट के अंदर की तरह कुछ का उपयोग करके स्मार्ट चर कैसे डिबग / आउटपुट कर सकता हूं ?

जवाबों:


330

आप {php}टैग का उपयोग कर सकते हैं

विधि 1 (स्मार्टी 3.1 या बाद में काम नहीं करेगा):

{php}

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

{/php}

विधि 2:

{$var|@print_r}

विधि 3:

{$var|@var_dump}

Php टैग के लिए रिज़ॉर्ट करना अच्छा अभ्यास नहीं है और आदर्श रूप से उन्हें सुरक्षा कारणों से वैसे भी अक्षम किया जाना चाहिए। @debug_print_var (क्रिस से जवाब देखें) ज्यादा बेहतर विलायक है।
Thelem

1
स्मार्टी के नवीनतम संस्करण के {php}...{/php}टैग को अक्षम करने के साथ , तरीके 2 या 3 बेहतर विकल्प हैं।
ल्यूक स्टीवेंसन

1
यदि आप इसे <pre> टैग से घेरते हैं तो आउटपुट और भी बेहतर लगता है। ऊपर दिए गए तरीके सबसे अच्छे हैं।
अलेक्जेंडर क्लद्ट

2
प्रिंट करने के लिए एक अतिरिक्त परम जोड़ें () इसे स्मार्टी में आउटपुट वापस करने के लिए, अंत में एक अतिरिक्त प्रतिध्वनि से बचने के लिए: {$ var | @print_r: true}
ivanhoe

120

यह काम करना चाहिए:

{$var|@print_r}

या

{$var|@var_dump}

पूरी चीज़ के प्रति स्मार्टी चलाने के लिए सरणियों के लिए @ की आवश्यकता है, अन्यथा यह प्रत्येक तत्व के लिए करता है।


8
बहुत बेहतर तो चुना जवाब।
डेमियन

बेहतर तो चुना जवाब? srsly? चुने हुए उत्तर में वे समाधान भी हैं, लेकिन पुराने स्मार्टली संस्करणों के लिए बस एक और है, इसलिए मैं वास्तव में नहीं मिल सकता है कि आप यह कैसे कह सकते हैं कि यह चुने गए एक xD से बेहतर है
oliiix

24

इसके लायक होने के लिए, आप अपने चर के लिए {$varname|@debug_print_var}एक- var_dump()आउटपुट प्राप्त कर सकते हैं ।


कभी-कभी आपको यह सुनिश्चित नहीं होता है कि चर क्या है और कई बार @print_rऔर @var_dumpउदाहरण के लिए (एक्स-कार्ट में) काम नहीं किया, लेकिन @debug_print_varआउटपुट था।
स्कोबालजिक

बहुत बहुत धन्यवाद! आपका जवाब ही है जो मुझे काम करता है।
तन

10

बस अपने .tpl में {debug} का उपयोग करें और अपने सोर्सकोड को देखें


3
अच्छा लगा। इसने वास्तव में मेरे लिए एक पॉप-अप विंडो बनाई, इसलिए मुझे स्रोत को देखना नहीं पड़ा। हालांकि मेरे पॉप-अप ब्लॉकर को निष्क्रिय करना था।
होबो


5

होशियार सत्र के साथ प्रयास करें:

{$smarty.session|@debug_print_var}

या

{$smarty.session|@print_r}

अपने आउटपुट को सुशोभित करने के लिए, <pre> </pre>टैग के बीच इसका उपयोग करें


2

अगर तुम कुछ उपदेश चाहते हो तो मैं सलाह दूंगा

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

बस की जगह yourvariable अपने चर द्वारा


1

यह प्रयास करें .... $debugging समझदार में सेट करें ।


मुझे यकीन है कि मुझे पता है, लेकिन मुझे इसे करने की आवश्यकता है बिना कोर php फ़ाइलों को
संशोधित

1

Prestashop में स्मार्ट में डीबग करने के लिए 1.6.x:

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

{ppp($variable)} -> debug only

एक अन्य उपयोगी डिबग टैग:

{debug}


0

होशियार में वहाँ आप |(एकल पाइपलाइन ऑपरेटर) का उपयोग करके उपयोग कर सकते हैं कि संशोधक में बनाया गया है । जैसे यह {$varname|@print_r}मान प्रिंट करेगाprint_r($php_variable)


0

मैं <script>console.log({$varname|@json_encode})</script>कंसोल में लॉग इन करने के लिए उपयोग करना पसंद करता हूं ।


0

{$variable|@debug_print_var nofilter}और आपको " <pre>" टैग जोड़ने की आवश्यकता नहीं है

{$variable|var_dump}आपको अधिक (लेकिन बदतर स्वरूपण) debug_print_varदिखाते हैं क्योंकि ऑब्जेक्ट में निजी चर नहीं दिखा रहा है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.