Tengo un módulo personalizado y una plantilla para alterar la apariencia de mis formularios de envío de nodos, según estas instrucciones .
Mi módulo consta de tres funciones:
- A
hook_form_alter()
que funciona bien - A
hook_theme()
que no hace nada más que devolver una matriz, incluso si ingresa otro código antesreturn
(no estoy seguro si esto es por diseño) - A
hook_preprocess_HOOK()
que está actualmente vacío
dpm()
no parece hacer nada en hook_preprocess_HOOK()
, aunque krumo()
en las mismas variables tipo de obras. Establece un mensaje de Drupal que se lee Array: [n] items
pero no se puede expandir ni inspeccionar en absoluto.
En mi plantilla, print_r($form);
imprime la matriz de formularios como se esperaba. dpm('self-aware roomba');
establece un mensaje de Drupal de "roomba autoconsciente" como se esperaba. pero dpm($form)
; no hace nada y no arroja ningún error.
Todo excepto mi hook_form_alter()
es exactamente como aparece en el tutorial vinculado. Incluso intenté sacar todo hook_form_alter()
para ver si funciona sin él; no lo hace
¿Qué podría estar causando dpm()
/ krumo()
fallar en silencio?
dpm('self-aware roomba');
no funcionaría de otra manera ykrumo()
no regresaríaArray: [n] items
, solo causaría un error fatal de PHP, lo que haría que mis registros no estén vacíos.Respuestas:
Me he encontrado con un problema donde
dpm()
y algunos otros mensajes fueron consumidos por una solicitud 404 en segundo plano.Explicación:
Si se llama
dpm()
odrupal_set_message()
antes de que se impriman los mensajestheme_status_messages()
, podrá verlos en la misma página.Si
dpm()
odrupal_set_message()
se llama despuéstheme_status_messages()
, esos mensajes se retrasan$_SESSION
hasta la próxima solicitud que lo hagatheme_status_messages()
.Algunos tipos de solicitudes NO se activan
theme_status_messages()
. Por ejemplo, el envío de un formulario solo procesará el formulario y luego realizará una redirección, de modo que los mensajes permanezcan en el$_SESSION
.Además, solo se activará en las solicitudes del mismo visitante / cliente (es por eso que se guarda en la sesión, que es específica del cliente).
Sin embargo, algunas solicitudes que suceden en segundo plano se disparan
theme_status_messages()
y pueden consumir sus mensajes.En mi caso, se trataba de solicitudes de imágenes faltantes, lo que resultó en páginas html 404 completas con mensajes (y obviamente no pude ver nada de esto).
Solución:
La solución fue activar la función "404 rápido".
fuente
prueba esto mi amigo
fuente