Ich habe ein benutzerdefiniertes Modul und eine Vorlage das Aussehen meiner Knoten Anmeldeformulare, á la zu ändern , diese Anweisungen .
Mein Modul besteht aus drei Funktionen:
- A
hook_form_alter()
das funktioniert gut - A
hook_theme()
, das nichts anderes tut, als ein Array zurückzugeben, selbst wenn Sie zuvor einen anderen Code eingegeben habenreturn
(nicht sicher, ob dies beabsichtigt ist) - A
hook_preprocess_HOOK()
, das derzeit leer ist
dpm()
scheint nichts zu tun hook_preprocess_HOOK()
, obwohl krumo()
mit den gleichen Variablen irgendwie funktioniert. Es wird eine Drupal-Nachricht festgelegt, die lautet, Array: [n] items
aber nicht erweitert oder überprüft werden kann.
Druckt in meiner Vorlage print_r($form);
das Formulararray wie erwartet aus. dpm('self-aware roomba');
Setzt erwartungsgemäß eine Drupal-Nachricht von "selbstbewusstem Roomba". aber dpm($form)
; tut nichts und wirft keinen Fehler.
Alles außer meinem hook_form_alter()
ist genau so, wie es im verlinkten Tutorial erscheint. Ich habe sogar versucht, das Ganze herauszuziehen, um hook_form_alter()
zu sehen, ob es ohne es funktioniert. es tut nicht.
Was verursacht werden könnte dpm()
/ krumo()
still scheitern?
dpm('self-aware roomba');
würde sonst nicht funktionieren undkrumo()
nicht zurückkehrenArray: [n] items
, es würde nur einen schwerwiegenden PHP-Fehler verursachen, der dazu führen würde, dass meine Protokolle nicht leer sind.Antworten:
Ich bin auf ein Problem gestoßen, bei dem
dpm()
und einige andere Nachrichten von einer 404-Anfrage im Hintergrund aufgefressen wurden.Erläuterung:
Wenn
dpm()
oderdrupal_set_message()
aufgerufen wird, bevor die Nachrichten ausgedruckt werdentheme_status_messages()
, werden sie auf derselben Seite angezeigt.Wenn
dpm()
oder danachdrupal_set_message()
aufgerufen wirdtheme_status_messages()
, werden diese Nachrichten$_SESSION
bis zur nächsten Anforderung verzögerttheme_status_messages()
.Einige Arten von Anforderungen werden NICHT ausgelöst
theme_status_messages()
. Beispielsweise führt eine Formularübermittlung nur die Formularverarbeitung und anschließend eine Umleitung durch, sodass die Nachrichten in der Form verbleiben$_SESSION
.Außerdem wird es nur bei Anfragen desselben Besuchers / Kunden ausgelöst (aus diesem Grund wird es in einer Sitzung gespeichert, die kundenspezifisch ist).
Einige Anforderungen, die im Hintergrund auftreten, werden jedoch ausgelöst
theme_status_messages()
und können Ihre Nachrichten verschlingen.In meinem Fall handelte es sich um Anfragen nach fehlenden Bildern, was zu vollständigen HTML 404-Seiten MIT Nachrichten führte (und ich habe offensichtlich nichts davon gesehen).
Lösung:
Die Lösung bestand darin, die Funktion "fast 404" zu aktivieren.
quelle
Teste das, mein Freund
quelle