टहनी टेम्प्लेट डीबग करते समय मैं किंट () को और अधिक तेज़ी से कैसे लोड कर सकता हूं?


15

मैंने इस बारे में काफी चर्चा की है कि किस तरह से देवल मॉड्यूल से किंट () काम करना मुश्किल है क्योंकि यह PHP मेमोरी सीमा को अधिकतम करता है और ब्राउज़र को खींचता है। मैंने स्तरों की संख्या को सीमित करके इसकी गति में सुधार पर कुछ विचार सुने हैं। उदाहरण के लिए, settings.php में, आप निम्न कार्य कर सकते हैं:

require_once DRUPAL_ROOT . '/modules/contrib/devel/kint/kint/Kint.class.php';
Kint::$maxLevels = 3;

किंट () की गति में सुधार करने के लिए कोई अन्य तरीके?


1
प्रदर्शन का मुद्दा इस तथ्य के कारण है कि डी 8 ओओपी है इसलिए अब प्रदर्शित करने के लिए डेटा का लोड हो रहा है। इसलिए मुझे नहीं लगता कि यह जेएस से बेहतर कैसे हो सकता है क्योंकि यह वास्तव में उस संरचित डेटा के सभी प्रस्तुत करता है।

जवाबों:


23

दो अन्य तरीके हैं, जिन्हें अन्य उपयोगकर्ताओं ने सेटिंग्स के अलावा अधिकतम आउटपुट स्तर सेट करने के लिए उल्लेख किया है। प्रश्न में वर्णित विधि के अलावा, कुछ और विचार नीचे दिए गए हैं:

  1. एक /modules/contrib/devel/kint/kint/config.phpफ़ाइल बनाएं और लाइन को जोड़ें (संशोधित करें $_kintSettings['maxLevels'] = 3;(स्लैम पर @ मर्डममंड द्वारा)

  2. एक प्रीप्रोसेस फंक्शन में, निम्न जोड़ें: (@thpoul on Slack)

    kint_require();
    Kint::$maxLevels = 3;
    
  3. सुनिश्चित करें कि +साइन पर कभी भी क्लिक न करें , जो पूरे पेड़ को दर्शाता है। इसके बजाय ब्लॉक पर क्लिक करें। आप आसानी से देखने के लिए एक नई विंडो में आउटपुट खोलने के लिए सही तीर पर क्लिक कर सकते हैं (जैसे कि आउटपुट ब्लॉक में है)। (स्लैक पर @wwrrun द्वारा)

  4. किंट () का उपयोग करने के बजाय, एक प्रीप्रोसेस फ़ंक्शन बनाएं और चर का पता लगाने के लिए डीबगर का उपयोग करें। (स्लैक पर @danny_englander द्वारा)

  5. पूरे पेड़ के माध्यम से रोल करने के बजाय एक विशिष्ट चर पास करें () नीचे ( @ नीचे Sssweat द्वारा )।

  6. यदि आपको यह जानने की जरूरत है कि चर क्या हैं, तो आप केवल एक {% for key, value in _context %}लूप ( नीचे @mortendk ) करके कुंजियों को देख सकते हैं


यहां से केसी के जवाब को भी जोड़ना चाहिए: drupal.stackexchange.com/a/214713/28813
एरिक

1
"कभी भी + चिह्न पर क्लिक न करें, जो पूरे पेड़ को दिखाता है" - धन्यवाद! मैं 'प्लस' चिह्न पर क्लिक कर रहा था, क्योंकि, ठीक है, इसके विस्तार के लिए प्रतीक। अब मुझे पता है :-)
tanc

kint_require(); Kint::$maxLevels = 3;आपके प्रीप्रोसेस फंक्शन में गोल्ड है । धन्यवाद! आपको आवश्यकतानुसार मनमाने स्तर निर्धारित करने की अनुमति देता है। बस इसका उपयोग अब 2 स्तरों के साथ सामान डंप करने के लिए और फिर तुरंत बाद 5 स्तरों के साथ एक अलग वस्तु को डंप करने के लिए।
विल

6

किंट एकमात्र पुस्तकालय नहीं है जिसे आप डिबगिंग चर और टहनी टेम्पलेट के लिए उपयोग कर सकते हैं।

मैं सिम्फनी वेर-डम्पर का उपयोग करने का सुझाव देता हूं कि IMHO डिबगिंग चर के लिए सबसे शक्तिशाली काम में से एक है। Symfony var-dumper को नवीनतम संस्करण devel मॉड्यूल के साथ एकीकृत किया गया है (इस समस्या को devel समस्या कतार में देखें एक बुनियादी सिम्फनी var-dumper एकीकरण जोड़ें )

उपयोग के लिए डवल के साथ var-dumper

  • डाउनलोड करें और डेवेल मॉड्यूल स्थापित करें
  • संगीतकार के माध्यम से var-dumper स्थापित करें ( composer require symfony/var-dumper)
  • डिवेलपिंग सेटिंग पेज पर जाएं और डिफॉल्ट डम्पर के रूप में वेर-डम्पर सेट करें
  • उपयोग {{ devel_dump() }}या {{ kpr() }}या {{ dpm() }}{{kint ()}} के बजाय ट्वीग टेम्प्लेट में डिबग चर के लिए

2

यहाँ एक और टिप है:

उपयोग करने के बजाय {{ kint() }}जो सबकुछ वापस कर देगा, आप उस चर को पारित करके अधिक विशिष्ट हो सकते हैं जिसकी आपको आवश्यकता है; इस प्रकार, यह तेजी से लोड होगा।

उदाहरण के लिए: नोड में - [type] .html.twig आप कंटेंट वैरिएबल को kint में पास कर सकते हैं:

{{ kint(content) }}

यदि आप क्षेत्र का नाम जानते हैं, तो आप और भी विशिष्ट हो सकते हैं:

{{ kint(content.field_name['#items'].getValue()) }}

यह केवल फ़ील्ड नाम का मान लौटाएगा।


2

किंट का उपयोग करने के बजाय आप इस छोटी सी चाल को कर सकते हैं बजाय इसके कि आप वहां व्हाट्स का अंदाजा लगा सकें

node.html.twig

<ol>
{% for key, value in _context  %}
<li>{{ key }} </li>
 {% if loop.index == 2 %}}
    <pre>{{ dump( value ) }}</pre>
{% endif %}
{% endfor %}
</ol>

हाँ, यह न तो वह सारा प्यार देता है, जो किंट आपको दिखाना चाहता है, बल्कि कम से कम आपको नाम इत्यादि भी मिल जाता है


0

जब HTML दृश्य प्राप्त करना असंभव है या किंत आउटपुट लोड करना बहुत धीमा है ।

मैं चर को क्रमबद्ध करूंगा और इसे सहेजूंगा

\Drupal::logger('custom debug')->notice($string);

तब मैं यह करने के लिए कॉपी करेंगे unserialize.com और चुन Krumo प्रदर्शन ....


मैं सिर्फ D8 के लिए क्रुमो चाहता हूं
फेलिक्स ईव

-2

$GLOBALS['_kint_settings']['maxLevels'] = 4;अपनी सेटिंग में जोड़कर । Local.php को ट्रिक करनी चाहिए। यहां स्तरों की संख्या को बदलने के लिए स्वतंत्र महसूस करें।


3
यह, Drupal 8.2 में मेरे लिए काम नहीं करता है क्योंकि $GLOBALS['_kint_settings']['maxLevels']में settings.local.php में डिफ़ॉल्ट मान द्वारा ओवरराइट है /modules/contrib/devel/kint/kint/config.php
फिलिप माइकल

हाँ config.default.php यह समझ में नहीं आता है कि यह आपके द्वारा $ GLOBALS के रूप में डाली गई किसी भी चीज़ को ओवरराइड करेगा, इसलिए आप या तो इसे kint config में बदल सकते हैं या कॉन्फ़िगरेशन में उस मान को हटा सकते हैं और इसे काम करने के लिए इसे वैश्विक मान सकते हैं।
मार्को ब्लाजाकोविक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.