У меня есть пользовательский модуль и шаблон, чтобы изменить внешний вид форм отправки моего узла, как эти инструкции .
Мой модуль состоит из трех функций:
- А
hook_form_alter()
это работает нормально - A,
hook_theme()
который ничего не делает, но возвращает массив, даже если вы вводите другой код раньшеreturn
(не уверен, что это сделано специально ) - А,
hook_preprocess_HOOK()
который в настоящее время пуст
dpm()
кажется , не делать ничего hook_preprocess_HOOK()
, хотя krumo()
на один и тот же переменных родах работы. Он устанавливает сообщение Drupal, которое читает, Array: [n] items
но не может быть расширено или проверено вовсе.
В моем шаблоне print_r($form);
распечатывает массив форм, как и ожидалось. dpm('self-aware roomba');
устанавливает сообщение Drupal «самосознание roomba», как и ожидалось. но dpm($form)
; ничего не делает и не выдает ошибки.
Все, кроме моего, hook_form_alter()
в точности так, как это выглядит в связанном уроке. Я даже попытался вытащить весь, hook_form_alter()
чтобы увидеть, работает ли это без него; это не так.
Что может быть причиной dpm()
/ krumo()
провал молча?
dpm('self-aware roomba');
не будет работать иначе иkrumo()
не вернетсяArray: [n] items
, это просто вызовет фатальную ошибку PHP, которая приведет к тому, что мои журналы не будут пустыми.Ответы:
Я столкнулся с проблемой, где
dpm()
и некоторые другие сообщения были съедены запросом 404 в фоновом режиме.Объяснение:
Если
dpm()
илиdrupal_set_message()
вызывается до того, как сообщения будут распечатаныtheme_status_messages()
, вы можете увидеть их на той же странице.Если
dpm()
илиdrupal_set_message()
вызывается послеtheme_status_messages()
, то эти сообщения задерживаются$_SESSION
до следующего запросаtheme_status_messages()
.Некоторые типы запросов НЕ запускаются
theme_status_messages()
. Например, отправка формы будет выполнять только обработку формы, а затем выполнять перенаправление, поэтому сообщения остаются в$_SESSION
.Кроме того, он будет запускаться только по запросам одного и того же посетителя / клиента (именно поэтому он сохраняется в сеансе, который зависит от клиента).
Однако некоторые запросы, которые происходят в фоновом режиме, срабатывают
theme_status_messages()
и могут поглотить ваши сообщения.В моем случае это были запросы к пропущенным изображениям, что привело к полномасштабным сообщениям в формате 404 страниц с сообщениями WITH (и я, очевидно, не увидел ни одного из них).
Решение:
Решением было активировать функцию «быстрый 404».
источник
проверить это мой друг
источник