Dalam modul Drupal 7 saya, saya memiliki formulir dan penangan validasinya. Saya memanggil formulir saya dari field.tpl.php dengan print render(drupal_get_form('my_form'))
; ini bekerja seperti yang diharapkan.
Masalahnya adalah dalam hal nilai input salah.
Dibutuhkan dua pengiriman yang salah sebelum menampilkan pesan kesalahan: Pertama kali, ada batas merah di sekitar input saya yang salah, dan yang kedua, pesan kesalahan ditampilkan (dengan batas merah).
Jadi, apa cara yang benar untuk digunakan form_set_error()
?
drupal_set_error()
fungsi. Apakah Anda yakin tidak bermaksud jahatform_set_error()
?Jawaban:
Pembangun formulir tidak seharusnya dipanggil di dalam file templat, karena mereka dipanggil terlambat. Saat Anda menelepon
render(drupal_get_form('my_form'))
, kode yang membuat pesan kesalahan telah dieksekusi, dan pesan kesalahan akhirnya dilaporkan dari penangan validasi disimpan di sesi saat ini dari drupal_set_message () , yang dipanggil dariform_set_error()
.Kode untuk mencetak pesan kesalahan ada di file page.tpl.php .
Kode
drupal_set_message()
yang menyimpan pesan untuk ditampilkan adalah kode berikut:sumber
form_set_error()
file template adalah cara yang salah. Jadi, apa jalan yang benar?drupal_get_form()
seharusnya tidak dipanggil di dalam file template, tetapi di dalam modul.Anda seharusnya melihat form_set_error sebagai gantinya
jika Anda memiliki elemen seperti ini:
dalam fungsi panggilan balik validasi Anda lakukan ini jika Anda menemukan bahwa nilai-nilai dalam
$form_state['values']
tidak validsumber
form_set_error()
harus dipanggil di dalamhook_validate()
fungsi Anda seperti dijawab oleh LSU_JBob.sumber
hook_validate()
.