2012-11-28 13 views
6

मैं थोड़ी देर के लिए PHP के साथ काम कर रहा हूं, लेकिन Smarty के लिए बिल्कुल नया है।PHP त्रुटियों को दिखाने के लिए फोर्स स्मार्टी

मैं प्रेस्टैशॉप के साथ काम कर रहा हूं और मैंने देखा है कि स्मार्टी सभी PHP त्रुटियों को खाती है - जब PHP कोड में कोई त्रुटि होती है, तो .tpl फ़ाइल बस एक खाली पृष्ठ आउटपुट करती है। मैं कोशिश कर रहा हूं लेकिन मुझे कोई त्रुटि होने पर भी PHP कोड आउटपुट प्रदर्शित करने के लिए Smarty नहीं मिल सकता है।

PHP त्रुटि रिपोर्टिंग त्रुटियों को दिखाने के लिए सेट है।

तो, उदाहरण के लिए, मान लें कि इस example.php फ़ाइल है जाने:

<?php 
//included classes etc go here, irrelevant for this issue 

error_reporting(E_ALL^E_NOTICE); 

echo obvious wrong syntax" 
?> 

इस फ़ाइल जो एक टेम्पलेट ब्लॉक में उत्पादन फिट बैठता है example.tpl से जुड़ा है।

जाहिर है, इसे एक त्रुटि फेंकनी चाहिए। मैं Smarty वास्तव में उस त्रुटि को कैसे प्रदर्शित करूं?

उत्तर

12

देखें डिबग मोड को सक्रिय करने के पहले एक के लिए on को config/config.inc.php

के लिए जाने के निम्नलिखित लाइनों का पता लगाएं और chage off और सच्चे दूसरा

/* Debug only */ 
@ini_set('display_errors', 'on'); 
define('_PS_DEBUG_SQL_', true); 

हो जाएगा ताकि करने के लिए सेट PHP और SQL त्रुटियों को प्रदर्शित करें (यह संभवतः आपके लिए "रिक्त पृष्ठ" हल करने के लिए पर्याप्त होगा)।

वहाँ भी है एक blog post on prestashop site about p() and d() methods and how to track exceptions

Prestashop संस्करण 1.5 से अधिक पुराने में टेम्पलेट्स डिबग सक्रिय करने के लिए

, config/smarty.config.inc.php

निम्न पंक्ति ढूँढें और सच

के लिए सेट करने के लिए जाना
$smarty->debugging = true; 

जब आप अपना पृष्ठ रीफ्रेश करते हैं, तो themes/debug.tpl प्रस्तुत किया जाना चाहिए।

Prestashop टेम्पलेट डिबग 1.5+ आप व्यवस्थापक पैनल

प्राथमिकताएं> प्रदर्शन> चतुर

के माध्यम से चतुर डिबगिंग को सक्षम कर सकते हैं और Always open console निर्धारित करते हैं लेकिन सांत्वना हर किसी के लिए खोला जाएगा सक्रिय करने के लिए (नहीं लाइव साइट के लिए अच्छा :))

या Open console with URL parameter (SMARTY_DEBUG) सेट करें और अपने यूआरएल के अंत में ?SMARTY_DEBUG जोड़ें कंसोल

आशा है कि इससे मदद मिलती है।

+0

बढ़िया, धन्यवाद! – jovan

+0

यह cofing/config.inc.php फ़ाइल कहां है। मैं एक्सएएमपीपी का उपयोग कर रहा हूं। और XAMPP में phpmyadmin फ़ोल्डर के अंदर स्थित केवल 1 cofing.inc.php फ़ाइल है और इससे संबंधित कुछ भी नहीं है ??? –

+0

मेरा उत्तर प्रेस्टैशॉप 1.5 के बारे में था, बस Prestashop 1.6+ के लिए @Rocker Maruf का उत्तर देखें –

0

$error_reporting चर सेट करें।

http://www.smarty.net/docsv2/en/variable.error.reporting.tpl

+0

क्षमा करें, लेकिन मुझे इसे कहां सेट करना चाहिए? '$ Error_reporting = 1 करना; 'फ़ाइल में स्वयं कुछ भी नहीं प्रतीत होता है। '$ Smarty-> error_reporting = E_ALL और ~ E_NOTICE जोड़ना; 'कुछ भी नहीं करता है। – jovan

1

मैंने @ सेर्गेई गुक के उत्तर और ऑफ-कोर्स को देखा है, यह एक बहुत अच्छा जवाब है। हालांकि, Prestashop के बाद से संस्करण 1.6 जारी किया गया है।

तो यदि आप prestashop v 1.6.0 में सभी त्रुटियों को दिखाना चाहते हैं।6, तुम बस config/defines.inc.php

define('_PS_MODE_DEV_', true);

के साथ बदलें define('_PS_MODE_DEV_', false); क्या यह वास्तव में एक निरंतर सेट कर दिया जाता है और अगले कतार में यह जाँच करता है, तो "_PS_MODE_DEV_" सच तो यह होगा है में जाने की जरूरत Prestashop

if (_PS_MODE_DEV_) 
{ 
    @ini_set('display_errors', 'on'); 
    @error_reporting(E_ALL | E_STRICT); 
    define('_PS_DEBUG_SQL_', true); 
} 
else 
{ 
    @ini_set('display_errors', 'off'); 
    define('_PS_DEBUG_SQL_', false); 
} 

में सभी प्रकार की त्रुटियों को दिखाएं मैंने इसका परीक्षण किया है और यह ठीक काम करता है।

संबंधित मुद्दे