Come posso fare in modo che kint () venga caricato più velocemente durante il debug dei modelli di ramoscello?


15

Ho visto molte discussioni su come kint () dal modulo Devel sia difficile da lavorare perché massimizza i limiti di memoria PHP e fa trascinare il browser. Ho sentito alcune idee su come migliorare la sua velocità limitando il numero di livelli. Ad esempio, in settings.php, puoi fare quanto segue:

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

Altri modi per migliorare la velocità di kint ()?


1
Il problema delle prestazioni è causato dal fatto che D8 è OOP, quindi ora c'è un carico di dati da visualizzare. Quindi non vedo come possa andare meglio dal momento che è un JS che rende davvero tutti quei dati strutturati.

Risposte:


23

Esistono altri due modi in cui altri utenti hanno menzionato per impostare i livelli di output massimi oltre al metodo settings.php menzionato nella domanda, oltre a un paio di altre idee di seguito:

  1. Crea un /modules/contrib/devel/kint/kint/config.phpfile e aggiungi / modifica la linea $_kintSettings['maxLevels'] = 3;(di @mdrummond su Slack)

  2. In una funzione di preelaborazione, aggiungere quanto segue: (di @thpoul su Slack)

    kint_require();
    Kint::$maxLevels = 3;
  3. Assicurati di non fare mai clic sul +segno, che mostra l'intero albero. Fai clic sul blocco invece. È possibile fare clic sulla freccia destra per aprire l'output in una nuova finestra per una visualizzazione più semplice (come quando l'output è in un blocco). (di @cwightrun su Slack)

  4. Invece di usare kint (), crea una funzione di preelaborazione e usa un debugger per esplorare le variabili. (di @danny_englander su Slack)

  5. Passa kint () una variabile specifica invece di farla rotolare attraverso l'intero albero ( di @No Sssweat di seguito ).

  6. Se hai solo bisogno di sapere quali variabili esistono, puoi semplicemente visualizzare le chiavi facendo un {% for key, value in _context %}ciclo ( di @mortendk di seguito )


Dovrebbe anche aggiungere la risposta di Casey da qui: drupal.stackexchange.com/a/214713/28813
Eric Steinborn

1
"Assicurati di non fare mai clic sul segno +, che mostra l'intero albero" - Grazie! Stavo facendo clic sul segno "più" perché, beh, è ​​il simbolo di espansione. Ora lo so :-)
tanc,

kint_require(); Kint::$maxLevels = 3;nella tua funzione di preelaborazione è GOLD . Grazie! Ti permette di impostare livelli arbitrari secondo necessità. Basta usarlo ora per scaricare oggetti con 2 livelli e poi scaricare immediatamente un oggetto diverso con 5 livelli.
Will

6

Kint non è l'unica libreria che è possibile utilizzare per eseguire il debug di variabili e modelli di ramoscelli.

Suggerisco di usare Symfony var-dumper che IMHO è una delle librerie più potenti per il debug delle variabili. Symfony var-dumper è integrato con l'ultima versione del modulo di sviluppo (vedi questo problema nella coda dei problemi di sviluppo Aggiungi un'integrazione di base con var-dumper )

Per l'uso var-dumper con devel

  • scarica e installa il modulo di sviluppo
  • installa var-dumper tramite compositore ( composer require symfony/var-dumper)
  • vai alla pagina delle impostazioni di sviluppo e imposta var-dumper come dumper predefinito
  • utilizzare {{ devel_dump() }}o {{ kpr() }}o {{ dpm() }}invece di {{kint ()}} per le variabili di debug nei modelli di ramoscelli

2

Ecco un altro consiglio:

Invece di usare {{ kint() }}ciò che restituirà tutto, puoi essere più specifico passando la variabile di cui hai bisogno; quindi, si caricherà più velocemente.

Ad esempio: Nel nodo - [tipo] .html.twig puoi passare la variabile di contenuto a kint:

{{ kint(content) }}

Se conosci il nome del campo, puoi essere ancora più specifico:

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

Ciò restituirà solo i valori del nome campo.


2

invece di usare kint puoi fare questo piccolo trucco invece solo per avere un'idea di cosa ci sia dentro

node.html.twig

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

sì, non dà tutto l'amore che Kint vuole mostrarti, ma almeno ottieni i nomi ecc


0

Quando è impossibile ottenere la vista HTML o è troppo lento per caricare l' output di kint .

Serializzerò la variabile e la salverò con

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

Allora io copiarlo unserialize.com e scegli Krumo visualizzazione ....


Voglio solo Krumo per D8
Felix Eve il

-2

Aggiungere il $GLOBALS['_kint_settings']['maxLevels'] = 4;tuo settings.local.php dovrebbe fare il trucco. Sentiti libero di cambiare il numero di livelli qui.


3
Questo non funziona per me in Drupal 8.2, perché $GLOBALS['_kint_settings']['maxLevels']in settings.local.php viene sovrascritto dal valore predefinito in /modules/contrib/devel/kint/kint/config.php .
Philipp Michael,

Sì, config.default.php non ha senso sovrascriverà tutto ciò che metterai come $ GLOBALS, quindi puoi cambiarlo in kint config o eliminare quel valore in config e metterlo come globale per farlo funzionare.
Marko Blazekovic,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.