Dal şablonlarında hata ayıklarken kint () yüklemesini nasıl daha hızlı yapabilirim?


15

Devel modülünden kint () ile çalışmanın zor olduğu hakkında biraz tartışma gördüm, çünkü PHP bellek sınırlarını en üst düzeye çıkarıyor ve tarayıcıyı sürüklüyor. Seviye sayısını sınırlayarak hızını artırmaya yönelik bazı düşünceler duydum. Örneğin, settings.php içinde aşağıdakileri yapabilirsiniz:

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

Kint () hızını artırmanın başka yolları var mı?


1
Performans sorunu, D8'in OOP olması nedeniyle ortaya çıkacak çok fazla veri var. Bu yüzden, tüm bu yapılandırılmış verileri gerçekten işleyen bir JS olduğu için nasıl daha iyi olabileceğini göremiyorum.

Yanıtlar:


23

Diğer kullanıcıların, soruda belirtilen settings.php yöntemine ek olarak maksimum çıktı düzeylerini ayarlamak için bahsettikleri iki yol daha, ayrıca aşağıdaki birkaç fikir daha vardır:

  1. Bir /modules/contrib/devel/kint/kint/config.phpdosya oluşturun ve satırı ekleyin / değiştirin $_kintSettings['maxLevels'] = 3;(@mdrummond tarafından Slack)

  2. Bir önişleme fonksiyonunda aşağıdakileri ekleyin: (Slack'te @ thpoul tarafından)

    kint_require();
    Kint::$maxLevels = 3;
  3. +Ağacın tamamını gösteren işarete asla tıklamadığınızdan emin olun . Bunun yerine bloğu tıklayın. Çıktıyı daha kolay görüntülemek için çıktıyı yeni bir pencerede açmak için sağ oku tıklatabilirsiniz (çıktının bir bloktayken olduğu gibi). (@ cwightrun tarafından Slack)

  4. Kint () kullanmak yerine, bir önişleme fonksiyonu oluşturun ve değişkenleri keşfetmek için bir hata ayıklayıcı kullanın. (@ Sny'de @danny_englander tarafından)

  5. Kint () öğesini tüm ağaç boyunca yuvarlamak yerine belirli bir değişkeni iletin (aşağıdaki @No Sssweat ile ).

  6. Sadece hangi değişkenlerin var olduğunu bilmeniz gerekiyorsa, bir {% for key, value in _context %}döngü yaparak anahtarları görüntüleyebilirsiniz ( aşağıdaki @mortendk'e göre )


Ayrıca Casey'nin cevabını da buradan eklemelisiniz
Eric Steinborn

1
"Tüm ağacı gösteren + işaretini asla tıklamayın" - Teşekkürler! 'Artı' işaretini tıklıyordum çünkü genişleme sembolü. Şimdi biliyorum :-)
tanc

kint_require(); Kint::$maxLevels = 3;önişleme fonksiyonunuzda GOLD . Teşekkür ederim! Gerektiğinde keyfi seviyeler ayarlamanıza olanak tanır. Sadece şimdi 2 seviyeleri ile şeyler dökümü için kullanın ve hemen sonra 5 seviyeleri ile farklı bir nesne dökümü.
Will

6

Kint, hata ayıklama değişkenleri ve dal şablonları için kullanabileceğiniz tek kitaplık değildir.

IMHO'nun değişkenleri hata ayıklamak için en güçlü lib'dan biri olduğu Symfony var-dumper'ı kullanmanızı öneririm . Symfony var-dumper, devel modülünün en son sürümüyle entegre edilmiştir (devel sorunu kuyruğundaki bu konuya bakın Temel bir symfony var-damper entegrasyonu ekleyin )

Devel ile var-damper kullanımı için

  • devel modülünü indirip yükle
  • var-dumper'ı composer ( composer require symfony/var-dumper) ile kurun
  • devel ayarlar sayfasına gidin ve var-dumper'ı varsayılan damper olarak ayarlayın
  • kullanmak {{ devel_dump() }}ya da {{ kpr() }}ya da {{ dpm() }}yerine {{Kint ()}} dal şablonlarında ayıklama değişkenleri

2

İşte başka bir ipucu:

{{ kint() }}Her şeyi döndürecek olanı kullanmak yerine, ihtiyacınız olan değişkeni ileterek daha belirgin olabilirsiniz; böylece daha hızlı yüklenir.

Örneğin: Düğümde - [type] .html.twig'de içerik değişkenini kint'e iletebilirsiniz:

{{ kint(content) }}

Alanın adını biliyorsanız, daha da net olabilirsiniz:

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

Bu yalnızca alan adının değer (ler) ini döndürür.


2

kint kullanmak yerine bu küçük numarayı sadece orada ne olduğuna dair bir fikir edinmek için yapabilirsiniz.

node.html.twig

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

Evet, kint'in size göstermek istediği tüm sevgiyi vermiyor, ama en azından isimleri vb.


0

HTML görünümünü elde etmek mümkün olmadığında veya kint çıktısını yüklemek çok yavaş olduğunda .

Değişkeni serileştireceğim ve kaydedeceğim

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

Sonra unserialize.com'a kopyalayacağım ve Krumo ekranını seçeceğim ....


Sadece D8 için Krumo istiyorum
Felix Eve

-2

Ekleme $GLOBALS['_kint_settings']['maxLevels'] = 4;sizin settings.local.php içinde hile yapmak gerekir. Buradaki seviye sayısını değiştirmekten çekinmeyin.


3
Bunun nedeni, Drupal 8.2 benim için çalışmaz $GLOBALS['_kint_settings']['maxLevels']içinde settings.local.php varsayılan değeri tarafından yazılır /modules/contrib/devel/kint/kint/config.php .
Philipp Michael

Evet. Config.default.php, $ GLOBALS olarak koyduğunuz her şeyi geçersiz kılacağını anlamıyor, böylece kint config olarak değiştirebilir veya config içindeki bu değeri silebilir ve çalışması için global olarak koyabilirsiniz.
Marko Blazekovic
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.