দ্বৈত টেম্পলেটগুলি ডিবাগ করার সময় কীভাবে আমি কীট () লোডটি দ্রুত তৈরি করতে পারি?


15

ডিভেল মডিউল থেকে কীট () কীভাবে কাজ করা কঠিন তা নিয়ে আমি বেশ কিছুটা আলোচনা দেখেছি কারণ এটি পিএইচপি মেমরির সীমা ছাড়িয়ে যায় এবং ব্রাউজারটিকে টেনে আনবে makes স্তরের সংখ্যা সীমাবদ্ধ করে এর গতি বাড়ানোর বিষয়ে আমি কিছু ধারণা শুনেছি। উদাহরণস্বরূপ, 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. একটি প্রাকপ্রসেস ফাংশনে, নিম্নলিখিতগুলি যুক্ত করুন: (@ থাপল স্ল্যাক দ্বারা)

    kint_require();
    Kint::$maxLevels = 3;
  3. কখনই +সাইনটি ক্লিক না করে নিশ্চিত হন , এটি পুরো গাছটি দেখায়। পরিবর্তে ব্লক ক্লিক করুন। সহজে দেখার জন্য নতুন উইন্ডোতে আউটপুট খোলার জন্য আপনি ডান তীরটি ক্লিক করতে পারেন (যেমন আউটপুট কোনও ব্লকের মধ্যে থাকে)। (স্লোকে @ কুইটারন লিখেছেন)

  4. কিন্ত () ব্যবহারের পরিবর্তে একটি প্রিপ্রোসেস ফাংশন তৈরি করুন এবং ভেরিয়েবলগুলি অন্বেষণ করতে একটি ডিবাগার ব্যবহার করুন। (স্ল্যাকের উপর @danny_englander দ্বারা)

  5. পুরো গাছের ( এটি নীচে @ কোনও এসসিওয়েট দ্বারা ) রোল তৈরির পরিবর্তে কিন্ট () একটি নির্দিষ্ট ভেরিয়েবল পাস করুন ।

  6. আপনার যদি কেবল ভেরিয়েবলগুলির অস্তিত্ব জানতে হয় তবে আপনি কেবল একটি {% for key, value in _context %}লুপ ব্যবহার করে কীগুলি দেখতে পারেন ( নীচে @ মোড়েনডেক দ্বারা )


এখান থেকেও ক্যাসির উত্তর যুক্ত করা উচিত: drupal.stackexchange.com/a/214713/28813
এরিক স্টেইনবোন

1
"কখনই + চিহ্নটি ক্লিক না করে দেখুন, এটি পুরো গাছটিকে দেখায়" - আপনাকে ধন্যবাদ! আমি 'প্লাস' চিহ্নটি ক্লিক করছিলাম কারণ, ভাল, এটি প্রসারণের প্রতীক। এখন আমি জানি :-)
ট্যাঙ্ক

kint_require(); Kint::$maxLevels = 3;আপনার প্রাকপ্রসেস ফাংশন গোল্ড হয় । ধন্যবাদ! আপনাকে প্রয়োজন হিসাবে স্বেচ্ছাচারী স্তর সেট করার অনুমতি দেয়। মাত্র 2 স্তরের স্টাফ ফেলে দিতে এখনই এটি ব্যবহার করুন এবং তারপরে তত্ক্ষণাত্ 5 টি স্তরযুক্ত একটি পৃথক বস্তু ডাম্প করুন।
উইল

6

কিন্ত একমাত্র লাইব্রেরি নয় যা আপনি ভেরিয়েবল এবং ডাবল টেমপ্লেটগুলি ডিবাগিংয়ের জন্য ব্যবহার করতে পারেন।

আমি সিমফনি ভ্যার-ডাম্পারটি ব্যবহার করার পরামর্শ দিচ্ছি যে আইএমএইচও ভেরিয়েবলগুলি ডিবাগ করার জন্য সবচেয়ে শক্তিশালী একটি b সিমফনি ভ্যার-ডাম্পারটি ডিভেল মডিউলের সর্বশেষ সংস্করণের সাথে একীভূত হয়েছে (এই সমস্যাটি ডিভেল ইস্যু সারিটিতে দেখুন একটি বেসিক সিম্ফনি ভার-ডাম্পার সংহতকরণ যুক্ত করুন )

দেভেল সহ ভার ডাম্পার ব্যবহারের জন্য

  • ডেভেল মডিউলটি ডাউনলোড এবং ইনস্টল করুন
  • সুরকারের মাধ্যমে ভার-ডাম্পার ইনস্টল করুন ( composer require symfony/var-dumper)
  • ডিভেল সেটিংস পৃষ্ঠাতে যান এবং ডিফল্ট ডাম্পার হিসাবে ভার-ডাম্পার সেট করুন
  • ব্যবহার {{ devel_dump() }}বা {{ kpr() }}বা {{ dpm() }}পরিবর্তে {{kint ()}} পল্লব টেমপ্লেটে ডিবাগ ভেরিয়েবলের জন্য

2

এখানে আরও একটি পরামর্শ:

{{ kint() }}যা সমস্ত কিছু ফিরিয়ে দেবে ব্যবহার করার পরিবর্তে, আপনার প্রয়োজনীয় ভেরিয়েবলটি পাস করে আপনি আরও সুনির্দিষ্ট হতে পারেন; সুতরাং, এটি দ্রুত লোড হবে।

উদাহরণস্বরূপ: নোডে - [টাইপ করুন]। Html.twig আপনি বিষয়বস্তু ভেরিয়েবলকে কিন্তে পাস করতে পারেন:

{{ 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

যখন এইচটিএমএল ভিউ পাওয়া অসম্ভব হয় বা কিন্ত আউটপুট লোড করা খুব ধীর হয় ।

আমি ভেরিয়েবল সিরিয়ালাইজ করব এবং এটি দিয়ে সংরক্ষণ করব

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

তারপরে আমি এটি অনিরিয়ালাইজ ডটকম-এ অনুলিপি করব ক্রুমো প্রদর্শনটি বেছে নেব ...


আমি কেবল ডি 8
ফেলিক্স ইভ

-2

$GLOBALS['_kint_settings']['maxLevels'] = 4;আপনার সেটিংসে যোগ করা.লোকাল.এফপি কৌশলটি করা উচিত। স্তরের সংখ্যা পরিবর্তন করতে নির্দ্বিধায়


3
এই Drupal এর 8.2 আমার জন্য কাজ করে না কারণ $GLOBALS['_kint_settings']['maxLevels']এর মধ্যে settings.local.php এ ডিফল্ট মান মুছে ফেলা /modules/contrib/devel/kint/kint/config.php
ফিলিপ মাইকেল

হ্যাঁ কনফিগারেশন। ডিফল্ট.এফপি কোনও ধারণা রাখে না যে আপনি $ গ্লোবালস হিসাবে যে কোনও কিছু রেখেছেন তা ওভাররাইড করবে, তাই আপনি হয় এটি কিন্ট কনফিগারেশনে পরিবর্তন করতে পারেন বা কনফিগের মধ্যে সেই মানটি মুছে ফেলতে পারেন এবং এটি কার্যকর করার জন্য এটি বিশ্বব্যাপী রেখে দিতে পারেন।
মার্কো ব্লেজোকভিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.