dpm () स्क्रीन पर कोई परिणाम प्रदर्शित नहीं करता है


23

मुझे एक ही समस्या है जैसे file_scan_directory () को निष्पादित करने में लगभग 10 सेकंड लगते हैं । मैंने सिर्फ dpm(func_get_args())सुझाव की कोशिश की , और दुर्भाग्य से यह मुझे कुछ भी नहीं दिखाता है।

मैंने सभी कैश को साफ़ कर दिया है, और क्रोन कार्यों को चलाता है। मुझे किसकी याद आ रही है?


2
सुनिश्चित करें कि आपके पास लोगों में अनुमतियाँ / अनुमति के तहत डेवलपर की जानकारी एक्सेस करने की अनुमति है
कार्तिक

जवाबों:


28

सुनिश्चित करें कि आप print $messages;अपने page.tpl.phpटेम्पलेट फ़ाइल में है। डिफ़ॉल्ट रूप से, devel (dpm) साइट के संदेश क्षेत्र में सामग्री को प्रिंट करने के लिए कॉन्फ़िगर किया गया है। इसलिए यदि किसी कारण से आपका टेम्प्लेट की सामग्री को प्रस्तुत नहीं करता है $messages, तो आपको कुछ भी दिखाई नहीं देगा।


13
  1. कभी कभी krumo($variable)जब dpm($variable)काम नहीं कर सकता।

  2. कभी कभी print dpm($variable)जब dpm($variable)काम नहीं कर सकता।

    1. हो सकता है कि समाधान तब भी हो जब print $messagesआपके पास कोई page.tpl.phpनहीं है। शायद आप इसे वापस जोड़ सकते हैं।

9

आपको Devel तक पहुंचने के लिए सही अनुमतियों के साथ, Drupal साइट पर लॉग-इन किया जाना चाहिए। लॉग इन के रूप में व्यवस्थापक यह करना चाहिए।


7
अनाम उपयोगकर्ता के पास सही अनुमति होने पर लॉग-इन होना आवश्यक नहीं है।
kiamlaluno

3
यह अनुमति 'एक्सेस डेवलपर सूचना' के तहत 'व्यवस्थापक / लोगों / अनुमतियों' पर पाई जा सकती है।
Citricguy

9

मैं अत्यधिक devel_debug_log की सलाह दूंगा । इसके लिए devel मॉड्यूल की आवश्यकता होती है, और यह आपको ddl () फ़ंक्शन देता है। ddl कॉन्फ़िगरेशन में आपकी रिपोर्ट में एक पृष्ठ जोड़ता है, इसलिए यह वॉचडॉग के लिए मुद्रण के समान है, लेकिन आपके पास एक अच्छा स्वच्छ पृष्ठ है जहां आप अपने डिबग संदेश भेज सकते हैं, और दौड़-प्रकार की स्थितियों के बारे में चिंता न करें जहां आपके संदेश आपके पास से पहले साफ़ हो सकते हैं उन्हें देखने का मौका - या, आपके मामले में, विषय के रूप में।

(यह भी एक उपयोगी उपकरण है, यदि आप किसी भी प्रकार के एपीआई का निर्माण करने की कोशिश कर रहे हैं, क्योंकि उन सभी अनुरोधों में आपको कभी भी किसी प्रकार का डीपीएम () संदेश नहीं दिखाया जाएगा।)


1
यह मेरे लिए सबसे अच्छा समग्र समाधान था।
२३:३६ पर रैब्रिज

1
अजाक्स अनुरोध को डीबग करते समय भी अमूल्य।
फेलिक्स ईव

8

सुनिश्चित करें कि आपने इस मॉड्यूल में घोषित फ़ंक्शन के रूप में डेवेल मॉड्यूल को सक्षम और स्थापित किया dpm()है।

dpm()वर्णन यहाँ से लिया गया ।

Drupal_set_message () का उपयोग करके पृष्ठ के 'संदेश' क्षेत्र के लिए एक चर प्रिंट करता है। जब आप अपनी साइट को चलाने वाले कोड पर काम कर रहे हों तो आप इस फ़ंक्शन का उपयोग एक या अधिक चर का ट्रैक रखने के लिए कर सकते हैं। क्योंकि देवल मॉड्यूल अब क्रुमो के साथ आता है, आउटपुट कॉम्पैक्ट और विनीत है।

dpm($input, $name = NULL)

यदि, किसी कारण से, आप क्रुमो का उपयोग नहीं कर रहे हैं, तो आप अलग-अलग कॉल के बीच dpm () में अंतर करने के लिए $ नाम पैरामीटर का उपयोग कर सकते हैं।

आपके द्वारा Devel को डाउनलोड और सक्षम करने के बाद, file_scan_directory () से उत्तर का प्रयास करें और फिर से निष्पादित करने में लगभग 10 सेकंड लगते हैं और यह काम करना चाहिए।


यह वही रहता है। मैंने डेवेल मॉड्यूल को स्थापित और सक्षम किया, सभी कैश को साफ़ किया, क्रोन को चलाया और अभी भी dpm (func_get_args ()) कुछ भी नहीं दिखाता है।
जिमी

आप कहाँ लगा रहे हैं dpm(func_get_args());?
चपबाबू

Bootstrap.inc फ़ाइल में: dpm (func_get_args ()); $ मिलान = drupal_system_listing ("/ ^"। DRUPAL_PHP_FUNCTION_PATTERN। "\। $ एक्सटेंशन $ /", $ dir, 'name', 0); ...
जिमी

क्षण के लिए - बायपास dpm(func_get_args());को बदलकर देखें die(print_r(func_get_args());
चापाबू

3
अगर चापाबु द्वारा अनुशंसित दूसरा आदेश कुछ भी नहीं बदलता है, तो इसका सीधा सा मतलब है कि कोड को नहीं बुलाया गया है और आप उसी समस्या से प्रभावित नहीं हैं।
बर्दिर

5

यदि आप इसे टेम्पलेट फ़ाइल को स्पर्श किए (या होने) के बिना किसी फ़ंक्शन के अंदर से प्रिंट करना चाहते हैं, तो यह प्रयास करें:

$nid = 3;
$node = node_load($nid);
dpm($node);
print theme('status_messages'); 

3

यह कभी-कभी 404 लौटाने वाले पृष्ठ पर एक संसाधन का परिणाम होता है।

Drupal 404 पृष्ठ का प्रतिपादन करता है और सत्र से संदेशों को लाने (और साफ़ करने) में उन्हें 404 पृष्ठ पर रखता है जो आपको दिखाई नहीं देते हैं। फिर जब मुख्य पृष्ठ संदेशों को लाता है तो कोई भी नहीं बचा है।

आप नेटवर्क टैब खोल सकते हैं और यह देखने के लिए जांच कर सकते हैं कि किसी संसाधन में 404 की स्थिति है या नहीं।

यहाँ एक आसान उपाय यह है कि सेटिंग में इस लाइन को अनफॉलो करके तेजी से 404 को सक्षम करें।

# drupal_fast_404();

यहां एक और अच्छा समाधान है कि SlakeFistcrunch द्वारा सुझाए गए अनुसार devel_debug_log का उपयोग करें ।


2

AJAX के मामले में कभी-कभी संदेश काटा जा सकता है या काम नहीं करेगा।

अधिक विश्वसनीय तरीका बस करना है (फिर खत्म होने के बाद हटा दें):

var_dump($data); die();

या आप dd()(जैसे भी देवल का हिस्सा) का उपयोग कर सकते हैं , जैसे

dd(func_get_args());

फिर अपनी लॉग फ़ाइल (अस्थायी फ़ोल्डर में) की जाँच करें, जैसे

$ tail -f /tmp/drupal_debug.txt

उपरोक्त विधि का उपयोग करना अधिक सुविधाजनक है, तेज है और यह AJAX या अन्य अनुरोध का समर्थन कर सकता है, बिना वर्तमान साइट के प्रतिपादन को तोड़े।


यदि आप अभी भी पसंद करते हैं dpm(), तो उपयोग करने का भी प्रयास करें kint()(चर के इन सुंदर प्रिंट के लिए शामिल कींट सबमॉड्यूल को सक्षम करें)।


1

यदि केवल कुछ dpm()कॉल काम नहीं करते हैं, तो यह dpm()दुर्घटनाग्रस्त होने के कारण हो सकता है । मैंने देखा है कि निम्नलिखित परिदृश्य में एक कस्टम फ़ॉर्म सबमिट हैंडलर में यह हो रहा है:

function mymodule_formid_submit($form, &$form_state) {
  dpm($form_state);
}

मेरा मानना ​​है कि त्रुटि स्थिति एक अपवाद हैंडलर द्वारा पकड़ी गई थी dpm(), क्योंकि पृष्ठ ठीक प्रदर्शित कर रहा था, कोई WSOD या कुछ नहीं, बस कोई dpm()संदेश नहीं। त्रुटि संभवतः अनिर्धारित पुनरावृत्ति है, क्योंकि ddl($form_state)इसके बजाय उपयोग करने से ब्राउज़र को मेमोरी पर अधिकतम हो जाता है जब डेवेल डीबग लॉग मॉड्यूल द्वारा उत्पन्न रिपोर्ट में संबंधित ऑब्जेक्ट को देखते हुए।

वर्कअराउंड के रूप में, ऑब्जेक्ट के केवल (प्रासंगिक) भाग को प्रिंट करने का प्रयास करें, जैसे dpm($form_state['values'])या dpm(array_keys($form_state))

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