Widziałem sporo dyskusji na temat tego, w jaki sposób kint () z modułu Devel jest trudny w obsłudze, ponieważ maksymalizuje limity pamięci PHP i powoduje przeciąganie przeglądarki. Słyszałem o przemyśleniach dotyczących poprawy jego prędkości poprzez ograniczenie liczby poziomów. Na przykład w settings.php możesz wykonać następujące czynności:
require_once DRUPAL_ROOT . '/modules/contrib/devel/kint/kint/Kint.class.php';
Kint::$maxLevels = 3;
Jakieś inne sposoby na poprawę prędkości Kint ()?
theming
8
performance
chrisshattuck
źródło
źródło
Odpowiedzi:
Istnieją dwa inne sposoby, o których wspominali inni użytkownicy, w celu ustawienia maksymalnych poziomów wyjściowych oprócz metody settings.php wspomnianej w pytaniu, a także kilka innych pomysłów poniżej:
Utwórz
/modules/contrib/devel/kint/kint/config.php
plik i dodaj / zmodyfikuj linię$_kintSettings['maxLevels'] = 3;
(autor: @mdrummond na Slack)W funkcji wstępnego przetwarzania dodaj następujące: (autor: @thpoul na Slack)
Pamiętaj, aby nigdy nie klikać
+
znaku, który pokazuje całe drzewo. Zamiast tego kliknij blok. Możesz kliknąć strzałkę w prawo, aby otworzyć wyjście w nowym oknie w celu łatwiejszego przeglądania (np. Gdy wyjście jest w bloku). (autor: @cwightrun w serwisie Slack)Zamiast używać kint (), utwórz funkcję przetwarzania wstępnego i użyj debuggera do eksploracji zmiennych. (autor @danny_englander na Slack)
Przekaż kint () określoną zmienną zamiast zmuszać ją do przejścia przez całe drzewo ( autor: @No Sssweat poniżej ).
Jeśli potrzebujesz tylko wiedzieć, jakie zmienne istnieją, możesz po prostu wyświetlić klucze, wykonując
{% for key, value in _context %}
pętlę ( autor @mortendk poniżej )źródło
kint_require(); Kint::$maxLevels = 3;
w twojej funkcji przetwarzania wstępnego jest ZŁOTA . Dziękuję Ci! Pozwala ustawić dowolne poziomy według potrzeb. Wystarczy użyć go teraz, aby zrzucić rzeczy z 2 poziomami, a następnie natychmiast zrzucić inny obiekt z 5 poziomami.Kint nie jest jedyną biblioteką, której można używać do debugowania zmiennych i szablonów gałązek.
Sugeruję użycie Symfony var-dumper, że IMHO jest jedną z najpotężniejszych bibliotek lib do debugowania zmiennych. Symfony var-dumper jest zintegrowany z najnowszą wersją modułu devel (zobacz ten problem w kolejce problemów z devel Dodaj podstawową integrację symfony var-dumper )
Do użytku z wywrotką var z wywrotką
composer require symfony/var-dumper
){{ devel_dump() }}
lub{{ kpr() }}
czy{{ dpm() }}
zamiast {{kint ()}} dla zmiennych debugowania w szablonach gałązkaźródło
Oto kolejna wskazówka:
Zamiast używać,
{{ kint() }}
który zwróci wszystko, możesz być bardziej szczegółowy, przekazując potrzebną zmienną; w ten sposób ładuje się szybciej.Na przykład: W węźle - [typ] .html.twig możesz przekazać zmienną content do kint:
{{ kint(content) }}
Jeśli znasz nazwę pola, możesz być jeszcze bardziej szczegółowy:
Zwróci to tylko wartości nazw pól.
źródło
zamiast używać kinta, możesz zrobić tę małą sztuczkę, aby dowiedzieć się, co tam jest
node.html.twig
tak, to nie daje całej miłości, którą kint chce ci pokazać, ale przynajmniej wydobywasz nazwy itp
źródło
Gdy uzyskanie widoku HTML jest niemożliwe lub jest zbyt wolne, aby załadować dane wyjściowe kinta .
Zserializuję zmienną i zapiszę ją
\Drupal::logger('custom debug')->notice($string);
Następnie skopiuję go na unserialize.com i wybiorę wyświetlanie Krumo ....
źródło
Dodanie
$GLOBALS['_kint_settings']['maxLevels'] = 4;
ustawień.local.php powinno załatwić sprawę. Tutaj możesz zmienić liczbę poziomów.źródło
$GLOBALS['_kint_settings']['maxLevels']
w settings.local.php jest nadpisany wartością domyślną w /modules/contrib/devel/kint/kint/config.php .