Ich habe eine Menge Diskussionen darüber gesehen, wie schwierig es ist, mit kint () aus dem Devel-Modul zu arbeiten, weil es die PHP-Speichergrenzen ausschöpft und den Browser zum Ziehen bringt. Ich habe einige Gedanken über die Verbesserung der Geschwindigkeit durch Begrenzung der Anzahl der Ebenen gehört. 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, die Geschwindigkeit von kint () zu verbessern?
theming
8
performance
chrisshattuck
quelle
quelle
Antworten:
Neben der in der Frage erwähnten Methode settings.php gibt es zwei weitere Möglichkeiten, wie andere Benutzer die maximalen Ausgangspegel festlegen können:
Erstelle eine
/modules/contrib/devel/kint/kint/config.php
Datei und füge die Zeile hinzu /$_kintSettings['maxLevels'] = 3;
ändere sie (von @mdrummond auf Slack)Fügen Sie in einer Vorverarbeitungsfunktion Folgendes hinzu: (von @thpoul on Slack)
Achten Sie darauf, niemals auf das
+
Zeichen zu klicken , das den gesamten Baum zeigt. Klicken Sie stattdessen auf den Block. Sie können auf den Rechtspfeil klicken, um die Ausgabe in einem neuen Fenster zur einfacheren Anzeige zu öffnen (z. B. wenn sich die Ausgabe in einem Block befindet). (von @cwightrun auf Slack)Erstellen Sie anstelle von kint () eine Vorverarbeitungsfunktion und verwenden Sie einen Debugger, um die Variablen zu untersuchen. (von @danny_englander auf Slack)
Übergeben Sie kint () eine bestimmte Variable, anstatt sie durch den gesamten Baum rollen zu lassen ( von @No Sssweat unten ).
Wenn Sie nur wissen möchten , welche Variablen vorhanden sind, können Sie die Tasten durch Ausführen einer
{% for key, value in _context %}
Schleife anzeigen ( von @mortendk unten ).quelle
kint_require(); Kint::$maxLevels = 3;
in Ihrer Pre-Process-Funktion ist GOLD . Vielen Dank! Ermöglicht das Einstellen beliebiger Pegel nach Bedarf. Verwenden Sie es einfach jetzt, um Sachen mit 2 Ebenen zu entleeren und dann sofort danach ein anderes Objekt mit 5 Ebenen zu entleeren.Kint ist nicht die einzige Bibliothek, die Sie zum Debbuggen von Variablen und Zweigvorlagen verwenden können.
Ich schlage vor, Symfony Var-Dumper zu verwenden , da 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 Entwicklungswarteschlange Hinzufügen einer grundlegenden Symfony Var-Dumper-Integration ).
Zur Verwendung mit Var-Dumper mit Devel
composer require symfony/var-dumper
){{ devel_dump() }}
oder{{ kpr() }}
oder{{ dpm() }}
anstelle von {{kint ()}} für Debug-Variablen in Zweigvorlagenquelle
Hier ist ein weiterer Tipp:
Anstatt die Funktion zu verwenden,
{{ kint() }}
die alles zurückgibt, können Sie durch Übergeben der benötigten Variablen spezifischer vorgehen. Somit wird es schneller geladen.Beispiel: In node - [type] .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:
Dadurch werden nur die Werte des Feldnamens zurückgegeben.
quelle
Anstatt Kint zu verwenden, können Sie diesen kleinen Trick auch ausführen, um eine Vorstellung davon zu bekommen, was sich dort befindet
node.html.twig
Ja, es gibt nicht all die Liebe, die Kint dir zeigen will, aber zumindest bekommst du die Namen usw. raus
quelle
Wenn die HTML-Ansicht nicht abgerufen werden kann oder die Kint- Ausgabe zu langsam ist .
Ich werde die Variable serialisieren und mit speichern
\Drupal::logger('custom debug')->notice($string);
Dann kopiere ich es auf unserialize.com und wähle Krumo display ....
quelle
Das Hinzufügen
$GLOBALS['_kint_settings']['maxLevels'] = 4;
in Ihrer settings.local.php sollte den Trick tun. Fühlen Sie sich frei, die Anzahl der Ebenen hier zu ändern.quelle
$GLOBALS['_kint_settings']['maxLevels']
in settings.local.php durch den Standardwert in /modules/contrib/devel/kint/kint/config.php überschrieben wird .