Eu tenho um módulo personalizado e um modelo para alterar a aparência dos formulários de envio de nós, como essas instruções .
Meu módulo consiste em três funções:
- Um
hook_form_alter()
que funciona bem - Um
hook_theme()
que não faz nada além de retornar uma matriz, mesmo se você digitar outro código antesreturn
(não tenho certeza se é por design) - Um
hook_preprocess_HOOK()
que está vazio no momento
dpm()
não parece fazer qualquer coisa em hook_preprocess_HOOK()
, embora krumo()
nas mesmas variáveis tipo de obras. Ele define uma mensagem Drupal que lê, Array: [n] items
mas não pode ser expandida ou inspecionada.
No meu modelo, print_r($form);
imprime a matriz do formulário conforme o esperado. dpm('self-aware roomba');
define uma mensagem Drupal de "roomba autoconsciente" conforme o esperado. mas dpm($form)
; não faz nada e não gera erro.
Tudo, exceto o meu, hook_form_alter()
é exatamente como aparece no tutorial vinculado. Eu até tentei puxar o todo hook_form_alter()
para ver se funciona sem ele; isso não acontece.
O que poderia estar causando dpm()
/ krumo()
falha silenciosamente?
dpm('self-aware roomba');
não funcionaria de outra maneira ekrumo()
não retornariaArray: [n] items
, apenas causaria um erro fatal do PHP, o que faria com que meus logs não estivessem vazios.Respostas:
Corri para um problema em que
dpm()
e algumas outras mensagens foram comidas por uma solicitação 404 em segundo plano.Explicação:
Se
dpm()
oudrupal_set_message()
for chamado antes da impressão das mensagenstheme_status_messages()
, você poderá vê-las na mesma página.Se
dpm()
oudrupal_set_message()
for chamado depoistheme_status_messages()
, essas mensagens serão adiadas$_SESSION
até a próxima solicitaçãotheme_status_messages()
.Alguns tipos de pedidos NÃO são acionados
theme_status_messages()
. Por exemplo, um envio de formulário fará apenas o processamento do formulário e, em seguida, redirecionará, para que as mensagens permaneçam no$_SESSION
.Além disso, ele será acionado apenas em solicitações do mesmo visitante / cliente (é por isso que é salvo na sessão, que é específica do cliente).
No entanto, algumas solicitações que ocorrem em segundo plano são acionadas
theme_status_messages()
e podem consumir suas mensagens.No meu caso, foram pedidos de imagens ausentes, que resultaram em páginas HTML html 404 completas COM mensagens (e eu não consegui ver nada disso, obviamente).
Solução:
A solução foi ativar o recurso "fast 404".
fonte
teste isso meu amigo
fonte