Saya memiliki modul khusus dan templat untuk mengubah tampilan formulir pengiriman simpul saya, termasuk instruksi ini .
Modul saya terdiri dari tiga fungsi:
- A
hook_form_alter()
yang berfungsi dengan baik - A
hook_theme()
yang tidak melakukan apa pun kecuali mengembalikan array, bahkan jika Anda memasukkan kode lain sebelumnyareturn
(tidak yakin apakah ini sesuai desain) - A
hook_preprocess_HOOK()
yang saat ini kosong
dpm()
sepertinya tidak melakukan apa-apa hook_preprocess_HOOK()
, meskipun krumo()
pada variabel yang sama jenis pekerjaan. Ini menetapkan pesan Drupal yang berbunyi Array: [n] items
tetapi tidak dapat diperluas atau diperiksa sama sekali.
Di templat saya, print_r($form);
mencetak array formulir seperti yang diharapkan. dpm('self-aware roomba');
menetapkan pesan Drupal "roomba sadar diri" seperti yang diharapkan. tapi dpm($form)
; tidak melakukan apa pun dan tidak melempar kesalahan.
Semuanya kecuali saya hook_form_alter()
persis seperti yang ditampilkan dalam tutorial tertaut. Saya bahkan mencoba menarik seluruh hook_form_alter()
untuk melihat apakah itu berfungsi tanpanya; tidak.
Apa yang bisa menyebabkan dpm()
/ krumo()
gagal diam-diam?
dpm('self-aware roomba');
tidak akan bekerja sebaliknya dankrumo()
tidak akan kembaliArray: [n] items
, itu hanya akan menyebabkan kesalahan PHP yang fatal, yang akan menyebabkan log saya tidak kosong.Jawaban:
Saya telah mengalami masalah di mana
dpm()
dan beberapa pesan lainnya dimakan oleh permintaan 404 di latar belakang.Penjelasan:
Jika
dpm()
ataudrupal_set_message()
dipanggil sebelum pesan dicetak dengantheme_status_messages()
, maka Anda bisa melihatnya di halaman yang sama.Jika
dpm()
ataudrupal_set_message()
dipanggil sesudahnyatheme_status_messages()
, maka pesan-pesan itu akan ditunda$_SESSION
hingga permintaan berikutnya yang melakukannyatheme_status_messages()
.Beberapa jenis permintaan TIDAK memicu
theme_status_messages()
. Misalnya mengirimkan formulir hanya akan melakukan pemrosesan formulir, dan kemudian melakukan redirect, sehingga pesan tetap di$_SESSION
.Selain itu, itu hanya akan memicu pada permintaan oleh pengunjung / klien yang sama (inilah sebabnya ia disimpan dalam sesi, yang khusus untuk klien).
Namun, beberapa permintaan yang terjadi di latar belakang memicu
theme_status_messages()
, dan dapat memakan pesan Anda.Dalam kasus saya ini adalah permintaan untuk gambar yang hilang, yang menghasilkan 404 halaman penuh dengan pesan html (dan saya tidak bisa melihat semua ini, jelas).
Larutan:
Solusinya adalah mengaktifkan fitur "fast 404".
sumber
ujilah ini temanku
sumber