Saya memiliki halaman dengan templat yang sangat sederhana:
<!DOCTYPE html>
<html>
<head><title>TEST REGISTRATION PAGE</title></head>
<body>
<?php
print drupal_get_form('user_register');
print $messages;
print $closure;
print $main_content;
?>
</body></html>
Pada dasarnya, ini menampilkan formulir pendaftaran dan tidak ada yang lain.
- Saya memasukkan beberapa data buruk pada formulir - nama pengguna (admin) yang sudah digunakan, dan tidak ada alamat email.
- Saya klik "buat akun baru".
- Halaman tersebut tampaknya mengirimkan dan memuat ulang, tetapi tidak ada yang terjadi - tidak ada pesan kesalahan yang ditampilkan .
- Saya menyegarkan halaman (F5).
- Tampilan Firefox "untuk menampilkan halaman ini, Firefox harus mengirim informasi yang akan mengulangi tindakan apa pun yang dilakukan sebelumnya" - jadi saya tahu bahwa POST saya telah melewati sebelumnya.
- Saya klik "kirim ulang" di jendela dialog itu.
- Pesan kesalahan saya muncul - "bidang alamat email diperlukan", "nama admin sudah diambil".
Ini terjadi untuk semua formulir yang telah saya uji sejauh ini, bukan hanya formulir pendaftaran.
Mengapa ini terjadi? Apa yang bisa saya lakukan untuk memperbaikinya sehingga pesan kesalahan ditampilkan pertama kali?
Saya senang melakukan apa pun yang saya perlu lakukan debug ini, tapi saya perlu arahan untuk mulai mencari. :)
drupal_get_form('user_register')
di$block['content']
. Saya menyertakan modul itu melalui konteks dan kemudian pesan kesalahan registrasi muncul dengan benar setelah pengiriman. Tampaknya terlalu rumit tetapi berfungsi dan saya bisa memasukkan form login / register seperti yang saya inginkan. Terima kasih banyak atas bantuan Anda.Kami memecahkan masalah validasi formulir, (validasi formulir terjadi setelah pesan diberikan, dan muncul pada permintaan berikutnya), oleh ..
memaksa validasi formulir di hook_node_view
sumber
Saya juga menderita masalah ini. Jawaban @ googletorp membantu saya menyelesaikannya.
Di awal halaman tpl. Dapatkan konten formulir yang diberikan yaitu untuk kasus saya:
Kemudian di bagian cetak pesan, dapatkan pesan yang memanggil drupal_get_messages () di halaman tpl. $ messages masih tidak dapat mengambil pesan tanpa penyegaran halaman lain.
Kemudian cetak konten formulir yang diberikan di bagian yang tepat dan dipecahkan :).
sumber
Bukan secara langsung solusi untuk pertanyaan yang diajukan, tetapi saya menemukan ini ketika saya mengalami masalah yang sama:
Jika blok formulir Anda dipanggil langsung dari file tpl.php (mungkin karena alasan tata letak), maka Anda akan menerima pesan yang tertunda.
Yaitu saya sedang memuat blok dengan kode berikut dalam file templat saya:
Dan kemudian merendernya di file tpl.php saya.
sumber