it-swarm.com.de

Wie kann ich das Laden von kint () beim Debuggen von twig-Vorlagen) beschleunigen?

Ich habe eine ganze Reihe von Diskussionen darüber gesehen, wie schwierig es ist, mit kint () aus dem Devel-Modul zu arbeiten, da es maximal PHP Speichergrenzen) ist und den Browser schleppt. Ich habe einige gehört Gedanken zur Verbesserung der Geschwindigkeit durch Begrenzung der Anzahl der Ebenen. In settings.php können Sie beispielsweise Folgendes tun:

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

Gibt es noch andere Möglichkeiten, um die Geschwindigkeit von kint () zu verbessern?

15
chrisshattuck

Zusätzlich zu der in der Frage genannten Methode settings.php gibt es zwei weitere Möglichkeiten, wie andere Benutzer die maximalen Ausgangspegel einstellen können, sowie einige weitere Ideen:

  1. Erstellen Sie eine /modules/contrib/devel/kint/kint/config.php - Datei und fügen Sie die Zeile $_kintSettings['maxLevels'] = 3; Hinzu/ändern Sie sie (von @mdrummond on Slack).

  2. Fügen Sie in einer Vorverarbeitungsfunktion Folgendes hinzu: (von @thpoul on Slack)

    kint_require();
    Kint::$maxLevels = 3;
    
  3. Klicken Sie niemals auf das Zeichen +, Das den gesamten Baum anzeigt. Klicken Sie stattdessen auf den Block. Sie können auf den Rechtspfeil klicken, um die Ausgabe in einem neuen Fenster zu öffnen und sie einfacher anzuzeigen (z. B. wenn sich die Ausgabe in einem Block befindet). (von @cwightrun auf Slack)

  4. Erstellen Sie anstelle von kint () eine Vorverarbeitungsfunktion und verwenden Sie einen Debugger, um die Variablen zu untersuchen. (von @danny_englander auf Slack)

  5. Übergeben Sie kint () eine bestimmte Variable, anstatt sie durch den gesamten Baum rollen zu lassen ( von @No Sssweat unten ).

  6. Wenn Sie nur wissen müssen, welche Variablen vorhanden sind, können Sie die Schlüssel einfach anzeigen, indem Sie eine {% for key, value in _context %} - Schleife ausführen ( von @mortendk unten ).

24
chrisshattuck

Kint ist nicht die einzige Bibliothek, die Sie zum Debbuging von Variablen und twig templates) verwenden können.

Ich schlage vor, Symfony var-dumper zu verwenden, damit IMHO eine der leistungsstärksten Bibliotheken zum Debuggen von Variablen ist. Symfony var-dumper ist in die neueste Version des Entwicklungsmoduls integriert (siehe dieses Problem in der Entwicklungsproblemwarteschlange Hinzufügen einer grundlegenden Symfony var-dumper-Integration )

Zur Verwendung von Var-Dumper mit Devel

  • entwicklungsmodul herunterladen und installieren
  • installiere var-dumper über composer (composer require symfony/var-dumper)
  • gehen Sie zur Seite mit den Entwicklungseinstellungen und legen Sie var-dumper als Standard-Dumper fest
  • verwenden Sie {{ devel_dump() }} oder {{ kpr() }} oder {{ dpm() }} anstelle von {{kint ()}} für Debug-Variablen in twig-Vorlagen)
7
marco

Hier ist ein weiterer Tipp:

Anstatt {{ kint() }} zu verwenden, das alles zurückgibt, können Sie genauer sein, indem Sie die benötigte Variable übergeben. Dadurch wird es schneller geladen.

Beispiel: In Knoten - [Typ] .html.twig können Sie die Inhaltsvariable an kint übergeben:

{{ kint(content) }}

Wenn Sie den Namen des Feldes kennen, können Sie noch genauer sein:

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

Dies gibt nur die Werte des Feldnamens zurück.

2
No Sssweat

anstatt Kint zu verwenden, können Sie diesen kleinen Trick ausführen, um sich ein Bild davon zu machen, was da drin ist

node.html.twig

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

ja, es gibt nicht die ganze Liebe, die Kint dir zeigen will, aber zumindest bekommst du die Namen usw. raus

2
mortendk

Zu Ihrer Information, ab Devel v3 müssen Sie zwei Aktualisierungen vornehmen, wenn Sie die von @chrisshattuck vorgeschlagene Top-Methode verwenden

  1. Gehe zu admin/config/development/devel?q=/admin/config/development/devel
  2. Stellen Sie sicher, dass "Kint" ausgewählt ist.
  3. Um die maximale Tiefe zu überschreiben, gehen Sie zu settings.local.php und aktualisiere die Variable max_depth.
  include_once(DRUPAL_ROOT . './../vendor/kint-php/kint/src/Kint.php');
  if (class_exists('Kint')) {
    Kint::$max_depth = 4;
   }  
1
mrsflinger

Wenn es nicht möglich ist, die HTML-Ansicht abzurufen, oder wenn das Laden der Ausgabe kint zu langsam ist.

Ich werde die Variable serialisieren und mit speichern

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

Dann kopiere ich es nach nserialize.com und wähle Krumo Anzeige ....

0
Jimmy Ko