Apakah mungkin untuk meletakkan beberapa formulir pada satu halaman?
Saya mencoba membuat halaman penawaran kupon. Saya ingin memiliki dua formulir untuk dua penawaran berbeda di setiap sisi halaman. Setiap formulir memiliki bidang teks untuk kode kupon dan tombol kirim sendiri. Bentuk pertama berfungsi dengan baik; namun nilai tersembunyi bentuk kedua tampaknya ditimpa oleh bentuk pertama.
Saya menggunakan hook_alter untuk mengubah bentuk kedua untuk membuatnya berbeda, tetapi masih memiliki form_id yang sama dengan yang pertama. Apakah ini yang menyebabkan masalah saya, atau apakah saya perlu mencari / berpikir di tempat lain?
Kedua formulir memiliki nilai yang sama untuk "form_id" dan "form_token," tetapi nilai yang berbeda untuk "form_build_id."
hook_forms()
tidak secara otomatis menyelesaikan ini. Jika Anda sederhana menggunakan formulir yang sama dua kali di halaman yang sama, Anda masih memiliki masalah dengan bidang formulir yang sama diulang dua kali.hook_forms()
tidak digunakan untuk memiliki dua formulir dengan bidang formulir yang sama di halaman yang sama; digunakan untuk memungkinkan memiliki pembangun formulir tunggal untuk ID formulir yang berbeda.hook_forms()
. OP kemudian mengubah salah satu dari dua bentuk.Anda dapat memiliki lebih dari satu formulir di halaman yang sama; lihat apa yang dilakukan oleh node_admin_content () , yang menggunakan kode berikut:
Meninggalkan pernyataan IF pertama, fungsi ini menambahkan dua bentuk berbeda yang memiliki penangan pengajuan mereka sendiri.
Masalahnya adalah dengan bidang formulir yang diulang dua kali. Struktur array berikut akan membuat masalah ketika array bentuk diratakan, karena akan ada dua bidang "kupon".
Tanpa melihat kode yang digunakan, saya dapat berpikir bahwa menggunakan panggilan balik halaman yang memanggil drupal_get_form () mungkin merupakan cara yang lebih mudah, dalam kasus Anda.
Saya mencoba menggunakan kode berikut di Drupal 6.
Konten
$output
untuk dua formulir adalah yang berikut (saya menghapus output untuk bidang formulir tunggal).Tidak ada konflik antara ID HTML yang ditetapkan ke bidang formulir yang sama, dan nilai untuk "form_build_id" (atau "form_token") berbeda dalam dua bentuk.
Implementasi yang
hook_form_alter()
digunakan untuk mengubah formulir harus dapat memahami dalam hal mana untuk mengubah formulir, atau kedua formulir akan menampilkan bidang yang sama.Dari sudut pandang pengalaman pengguna, saya tidak yakin menunjukkan dua bentuk berbeda dengan tombol pengiriman mereka sendiri adalah cara terbaik untuk melakukan apa yang ingin Anda capai.
Saya akan berpikir bahwa menggunakan formulir yang memperlihatkan bidang berbeda berdasarkan pada nilai yang ditetapkan untuk bidang lain akan lebih baik. Misalnya, formulir dapat memiliki pemilih untuk jenis kupon, dan akan menampilkan bidang formulir yang berbeda berdasarkan jenis kupon yang dipilih.
sumber