dpm () no muestra ningún resultado en la pantalla

23

Tengo el mismo problema, ya que file_scan_directory () tarda unos 10 segundos en ejecutarse . Acabo de probar la dpm(func_get_args())sugerencia, y desafortunadamente no me muestra nada.

He borrado todos los cachés y ejecuto las tareas cron. ¿Qué me estoy perdiendo?

Palanqueta
fuente
2
asegúrese de que tiene permisos para acceso Información del desarrollador bajo devel en personas / permisos
karthik

Respuestas:

28

Asegúrese de tener print $messages;en su page.tpl.phparchivo de plantilla. De forma predeterminada, el desarrollo (dpm) está configurado para imprimir su contenido en el área de mensajes del sitio. Entonces, si su plantilla por alguna razón no muestra el contenido de $messages, no verá nada.

svetlio
fuente
13
  1. A veces krumo($variable)puede funcionar cuando dpm($variable)no lo hace.

  2. A veces print dpm($variable)puede funcionar cuando dpm($variable)no lo hace.

    1. también podría ser la solución cuando ya no hay print $messagesen tu page.tpl.php. Quizás puedas volver a agregarlo.
leymannx
fuente
9

Debe iniciar sesión en el sitio de Drupal, con los permisos correctos para acceder a Devel. Inicie sesión como administrador debe hacerlo.

Powdermonkey1850
fuente
77
No es necesario iniciar sesión si los usuarios anónimos tienen el permiso correcto.
kiamlaluno
3
Este permiso se puede encontrar en 'admin / people / permissions' en 'Acceso a la información del desarrollador'.
Citricguy
9

Recomiendo encarecidamente devel_debug_log . Requiere el módulo de desarrollo y le proporciona la función ddl (). ddl agrega una página a sus informes en la configuración, por lo que es similar a la impresión en watchdog, pero tiene una página limpia y agradable donde puede enviar sus mensajes de depuración, y no se preocupe por las condiciones de tipo racial en las que sus mensajes pueden borrarse antes de que tenga una oportunidad de verlos, o, como en su caso, temas temáticos.

(Esta también es una herramienta EXTREMADAMENTE útil si está tratando de construir cualquier tipo de API, ya que todas esas solicitudes nunca le mostrarán ningún tipo de mensaje dpm ()).

Tendencia inquietante
fuente
1
Esta fue la mejor solución general para mí.
rrirower
1
También invaluable al depurar solicitudes ajax.
Felix Eve
8

Asegúrese de haber habilitado e instalado el módulo Devel como dpm()es una función declarada en este módulo.

dpm()Descripción tomada de aquí .

Imprime una variable en el área 'mensaje' de la página usando drupal_set_message (). Puede usar esta función para realizar un seguimiento de una o más variables cuando trabaje en el código que ejecuta su sitio. Debido a que el módulo Devel ahora viene con Krumo, la salida es compacta y discreta.

dpm($input, $name = NULL)

Si, por alguna razón, no está usando Krumo, puede usar el parámetro $ name para distinguir entre diferentes llamadas a dpm ().

Después de que haya descargado y habilitado Devel, intente la respuesta de file_scan_directory (), demora unos 10 segundos en ejecutarse nuevamente y debería funcionar.

Chapabu
fuente
Sigue siendo lo mismo. Instalé y habilité el módulo de desarrollo, borré todos los cachés, ejecuté cron y aún dpm (func_get_args ()) no muestra nada.
Jimmy
¿Dónde estás poniendo dpm(func_get_args());?
Chapabu
En el archivo bootstrap.inc: dpm (func_get_args ()); $ coincide = drupal_system_listing ("/ ^". DRUPAL_PHP_FUNCTION_PATTERN. "\. $ extension $ /", $ dir, 'nombre', 0); ...
Jimmy
Intente cambiar dpm(func_get_args());a die(print_r(func_get_args());- omitir Devel por el momento.
Chapabu
3
Si el segundo comando recomendado por Chapabu no cambia nada, simplemente significa que no se llama al código y que no se ve afectado por el mismo problema.
Berdir
5

Si desea imprimirlo desde dentro de una función sin tocar (o tener) un archivo de plantilla, intente esto:

$nid = 3;
$node = node_load($nid);
dpm($node);
print theme('status_messages'); 
Gavin Mcdonough
fuente
3

Esto a veces es el resultado de un recurso en la página que devuelve un 404.

Drupal renderiza la página 404 y al hacerlo recupera (y borra) los mensajes de la sesión y los coloca en la página 404 que no ve. Luego, cuando la página principal recupera los mensajes, no queda ninguno.

Puede abrir la pestaña de red y verificar si algún recurso tiene un estado 404.

Una solución fácil aquí es habilitar 404 rápido descomentando esta línea en settings.php:

# drupal_fast_404();

Otra buena solución aquí es usar devel_debug_log como lo sugiere SlakeFistcrunch.

Felix Eve
fuente
2

A veces, el mensaje se puede cortar o no funcionará en el caso de AJAX.

El método más confiable es hacer solo (luego eliminar después de terminar):

var_dump($data); die();

O puede usar dd()(parte de Devel también), por ejemplo

dd(func_get_args());

luego verifique su archivo de registro (en la carpeta temporal), por ejemplo

$ tail -f /tmp/drupal_debug.txt

Usar el método anterior es más conveniente, más rápido y puede admitir AJAX u otra solicitud sin interrumpir la representación actual del sitio.


Si todavía lo desea dpm(), intente también usar kint()(habilite el submódulo Kint incluido para estas bonitas impresiones de variables).

kenorb
fuente
1

Si solo algunas dpm()llamadas no funcionan, puede deberse a un dpm()bloqueo. Lo vi en el siguiente escenario en un controlador de envío de formulario personalizado:

function mymodule_formid_submit($form, &$form_state) {
  dpm($form_state);
}

Creo que la condición de error fue detectada por un controlador de excepción dpm(), porque la página se mostraba bien, sin WSOD o algo, simplemente tampoco había dpm()mensaje. El error es probablemente una recursión no detectada, porque el uso en su ddl($form_state)lugar dio como resultado que el navegador maximizara la memoria al mirar el objeto correspondiente en el informe generado por el módulo Devel Debug Log.

Como solución alternativa, intente imprimir solo una parte (relevante) del objeto, como dpm($form_state['values'])o dpm(array_keys($form_state)).

Tanius
fuente