Saltar al contenido

Drupal: ¿Cuál es la forma más sencilla de depurar variables en nodos, vistas, bloques y plantillas de ramitas de página?

Este team redactor ha estado largas horas buscando para darle espuestas a tu interrogante, te dejamos la respuesta de modo que nuestro objetivo es serte de mucha apoyo.

Solución:

¿Cuál es la forma más fácil de depurar variables en nodos, vistas, bloques y plantilla de página?

Bienvenido a Kint 101

Instalando

Usando Kint con Desarrollo 8.x-2.1, que viene con el módulo Devel.

Usando Kint con Desarrollo 4.0.1. Kint ya no viene con Devel, tendrás que hacer
composer require kint-php/kint y aplique el parche.

Importante: para usar kint() en un archivo twig necesita habilitar la depuración para twig. Si no está depurando dentro de un archivo twig / template, puede omitir esta parte.

Si tiene instalada la consola Drupal drupal site:mode dev, recuerda volver a ponerlo en drupal site:mode prod cuando haya terminado su desarrollo.

Si no tiene la consola Drupal, haga lo siguiente:

Habilitas la depuración de Twig en sites/default/services.yml. (Si
services.yml aún no existe; Copiar default.services.yml y copiarlo a services.yml.)

Establezca la variable de depuración en true. Y borra el caché.

parameters:
  twig.config:
    debug: true

Recuerde volver la depuración a false una vez que haya terminado de desarrollar.

Plantillas de Twig de depuración de código fuente

Ahora haga lo siguiente para evitar problemas con Devel 8.x-2.1, omita esta parte si usa Devel 4.0.1

Para empezar, es probable que se encuentre con este problema cuando intente un volcado de kint, especialmente si solo intenta
kint() sin pasar ningún parámetro

ingrese la descripción de la imagen aquí

Esto se debe a la array o el objeto es demasiado grande para que los recursos de su servidor manejen la configuración predeterminada de kint.

Editar /modules/devel/kint/kint/config.default.php y establecer $_kintSettings['maxLevels'] a un número menor para reducir la recursividad y la memoria necesaria para volcar variables. El valor predeterminado es 7, yo tengo el mío configurado en 4. Si 4 aún no funciona para usted, siga bajando el número.

Ok, usemos kint

Nota: Si está intentando dbug cuando está desconectado, deberá proporcionar Acceder a la información de kint permiso para el rol de usuario anónimo.

Por ejemplo, en comments.html.twig hacemos un kint(content) y tu verás

ingrese la descripción de la imagen aquí

Consejo # 1 No hagas clic en el botón +, es pura maldad

El botón + abrirá automáticamente a todos los niños y sus hijos.

En su lugar, haga clic en cualquier lugar de la barra que no sea el botón +, por ejemplo, haga clic aquí

ingrese la descripción de la imagen aquí

Mira que lindo y ordenado es nuestro Kint

ingrese la descripción de la imagen aquí

Además, ¿cuál es la forma más fácil de obtener valores de variables protegidas?

Obteniendo un valor

Digamos que estamos interesados ​​en el usuario. Entonces haga clic en el usuario, pero nuevamente no hagas clic en el botón +. Verás esto

ingrese la descripción de la imagen aquí

La identificación está protegida, ¿cómo obtenemos este valor?

Consejo # 2 haga clic en el métodos disponibles pestaña

Esto revelará todos los métodos que podemos usar aquí.

ingrese la descripción de la imagen aquí

Así que simplemente elija el que más le dé, ya que aquí está id() para obtener la identificación de usuario.

content.user.id()


¿Por qué la depuración se volvió tan compleja en drupal 8?

No lo es, siempre que sepa cómo usar Kint

Utilizando todos los consejos y trucos anteriores, pude responder esta pregunta Mostrar el correo electrónico del autor del comentario en comment.html.twig

¿Cuál es la forma más sencilla de depurar variables en nodos, vistas, bloques y plantilla de página?

Directamente de la documentación:

Mucho más allá, la mejor manera de lidiar con la impresión de variables es usar Xdebug.

Si usa los otros métodos que no son xdebug que se indican a continuación, tendrá muchas cosas recursivas renderizadas que pueden resultar en páginas y páginas de información que no son útiles para usted.

Entonces, usar un depurador adecuado es el enfoque recomendado. Podría tener la tentación de usar var_dump, o una extensión del mismo como el kint() herramienta incluida con devel, porque se percibe que tiene menos configuración. Pero para reforzar la documentación oficial, le recomiendo encarecidamente que no lo haga.

La hora que le lleva investigar e implementar XDebug se guardará una y otra vez a medida que se convierte en un depurador mucho más eficaz. El volcado de var es un enfoque aceptable para la depuración, pero es bastante anticuado y se convierte en un enfoque francamente pobre en comparación con el uso de XDebug y un IDE que sabe cómo integrarse correctamente.

Además, no tendrá problemas de recursos, no más 500 errores cuando intente ksm($vars) en un método de preproceso de página. Ya no es necesario esperar 30 segundos para que la página vuelva a responder después de hacer clic accidentalmente en la parte incorrecta de la salida.

Además, ¿cuál es la forma más fácil de obtener valores de variables protegidas?

Las propiedades protegidas son solo eso: protegidas. No se supone que pueda acceder fácilmente a ellos a menos que el autor de la clase haya expuesto un método para que lo haga, o que estén diseñados para estar disponibles a través de métodos mágicos. Si existen tales métodos, puede usarlos, o si está decidido a romper las convenciones, puede obtenerlos a través de la reflexión. Este no es un problema que Drupal pueda o intentaría resolver.

Por supuesto, su depurador le mostrará los valores de las propiedades protegidas sin que tenga que buscarlas.

¿Por qué la depuración se volvió tan compleja en drupal 8?

En realidad, en mi opinión, se volvió más fácil, supongo que depende de su perspectiva y experiencia. Sí, ahora hay una pequeña cantidad de gastos generales, debe configurar un depurador, pero cualquiera que esté realizando un desarrollo debe tener un depurador listo para funcionar. Solo lo configura una vez, luego puede usarlo en cada proyecto para siempre con un par de clics, sin código adicional, sin recordar eliminar ese código de depuración cuando haya terminado, sin 500 errores cuando una Twig llame a kint() pasa a producción donde el módulo de desarrollo está desactivado.

Ni siquiera es una comparación digna en mi opinión, el depurador lo supera todo static var dumping puede hacer todo el tiempo. Una vez que te hayas convertido, ¡te prometo que no pensarás en volver!

Puede utilizar el módulo twig_tweak.

Puedes usar drupal_dump(var) o su alias dd(var) para obtener un volcado variable que funcione incluso si el modo de depuración de twig está desactivado.

Aquí está la lista completa de funcionalidades: Twig Tweak Cheat Sheet

Reseñas y calificaciones de la guía

Si para ti ha sido útil nuestro artículo, sería de mucha ayuda si lo compartieras con el resto programadores así contrubuyes a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *