He visto bastante discusión sobre cómo es difícil trabajar con kint () del módulo Devel porque maximiza los límites de memoria de PHP y hace que el navegador se arrastre. He escuchado algunas ideas sobre cómo mejorar su velocidad limitando el número de niveles. Por ejemplo, en settings.php, puede hacer lo siguiente:
require_once DRUPAL_ROOT . '/modules/contrib/devel/kint/kint/Kint.class.php';
Kint::$maxLevels = 3;
¿Alguna otra forma de mejorar la velocidad de kint ()?
theming
8
performance
chrisshattuck
fuente
fuente
Respuestas:
Hay otras dos formas que otros usuarios han mencionado para establecer los niveles de salida máximos además del método settings.php mencionado en la pregunta, además de otras ideas a continuación:
Cree un
/modules/contrib/devel/kint/kint/config.php
archivo y agregue / modifique la línea$_kintSettings['maxLevels'] = 3;
(por @mdrummond en Slack)En una función de preproceso, agregue lo siguiente: (por @thpoul en Slack)
Asegúrese de nunca hacer clic en el
+
signo, que muestra todo el árbol. Haga clic en el bloque en su lugar. Puede hacer clic en la flecha hacia la derecha para abrir la salida en una nueva ventana para verla más fácilmente (como cuando la salida está en un bloque). (por @cwightrun en Slack)En lugar de usar kint (), cree una función de preproceso y use un depurador para explorar las variables. (por @danny_englander en Slack)
Pase kint () una variable específica en lugar de hacerlo rodar por todo el árbol ( por @No Sssweat a continuación ).
Si solo necesita saber qué variables existen, puede ver las claves haciendo un
{% for key, value in _context %}
bucle ( por @mortendk a continuación )fuente
kint_require(); Kint::$maxLevels = 3;
en su función de preproceso es ORO . ¡Gracias! Le permite establecer niveles arbitrarios según sea necesario. Simplemente usándolo ahora para volcar cosas con 2 niveles y luego inmediatamente volcar un objeto diferente con 5 niveles.Kint no es la única biblioteca que puede usar para depurar variables y plantillas de ramitas.
Sugiero usar Symfony var-dumper que, en mi humilde opinión, es una de las bibliotecas más potentes para depurar variables. Symfony var-dumper está integrado con la última versión del módulo de desarrollo (consulte este problema en la cola de problemas de desarrollo Agregue una integración básica de Symfony var-dumper )
Para usar var-dumper con desarrollo
composer require symfony/var-dumper
){{ devel_dump() }}
o{{ kpr() }}
, o{{ dpm() }}
en lugar de {{Kint ()}} para las variables de depuración en las plantillas ramitafuente
Aquí hay otro consejo:
En lugar de usar el
{{ kint() }}
que devolverá todo, puede ser más específico al pasar la variable que necesita; por lo tanto, se cargará más rápido.Por ejemplo: en el nodo - [tipo] .html.twig puede pasar la variable de contenido a kint:
{{ kint(content) }}
Si conoce el nombre del campo, puede ser aún más específico:
Esto solo devolverá los valores del nombre del campo.
fuente
en lugar de usar kint puedes hacer este pequeño truco solo para tener una idea de lo que hay allí
node.html.twig
Sí, no da todo el amor que Kint quiere mostrarte, pero al menos obtienes los nombres, etc.
fuente
Cuando es imposible obtener la vista HTML o es demasiado lento para cargar la salida de kint .
Serializaré la variable y la guardaré con
\Drupal::logger('custom debug')->notice($string);
Luego lo copiaré a unserialize.com y elegiré Krumo display ...
fuente
Agregar
$GLOBALS['_kint_settings']['maxLevels'] = 4;
en su settings.local.php debería hacer el truco. Siéntase libre de cambiar la cantidad de niveles aquí.fuente
$GLOBALS['_kint_settings']['maxLevels']
en settings.local.php se sobrescribe con el valor predeterminado en /modules/contrib/devel/kint/kint/config.php .