Saya telah membuat jenis konten bernama "menu utama". Saya memiliki beberapa daftar pilih yang saling bergantung. Saya ingin menampilkan daftar yang berbeda ketika kotak centang yang berbeda dipilih. Saya tahu bahwa saya perlu menggunakan Ajax untuk mengedit formulir untuk mencapainya, tetapi adakah yang bisa memberitahu saya cara menggunakan Ajax dengan hook_form_alter?
Id formulir dari formulir yang seharusnya saya edit adalah "main_menu_node_form". Ketika saya mencoba mengakses formulir ini menggunakan hook_form_alter()
, dan menambahkan #ajax
properti dari bidang formulir, tampaknya saya tidak dapat melakukannya karena bidang sudah dirender sebelum pegangan diteruskan ke hook_form_alter()
. Adakah yang bisa membantu saya menyelesaikan ini?
Catatan: Saya telah membuat tipe konten menggunakan hook_install()
.
function main_menu_content_type_form_main_menu_node_form_alter(&$form, &$form_state, $form_id) {
dpm($form);
dpm($form_state);
$form['field_mlnk'] = array(
'#ajax' => array(
'callback' => 'main_menu_content_type_form_main_menu_node_form_alter_callback',
'wrapper' => 'link-div',
'method' => 'replace',
'effect' => 'fade',
),
);
}
hook_form_alter()
(ketika Anda menulis, "Ketika saya mencoba mengakses formulir ini menggunakan formulir ubah [... [...]").main_menu_content_type_form_main_menu_node_form_alter_callback()
; jika fungsi itu berisi kode yang salah, pengguna tidak dapat melaporkan perubahan apa pun yang harus Anda lakukan pada kode Anda untuk membuatnya berfungsi.Jawaban:
Saya dapat memberi Anda beberapa informasi terperinci tentang apa yang Anda lakukan salah dengan hook_form_alter jika Anda menyertakan beberapa kode aktual dari modul khusus Anda. Namun, karena Anda tidak memberikan spesifik, Anda dapat menonton video: Cara membuat formulir yang indah di Drupal 7 (perhatikan bahwa saya memasukkan URL sehingga dimulai pada saat di mana ajax dijelaskan). Sekitar 5 menit menonton ini mungkin akan memberi Anda jawaban untuk pertanyaan Anda (karena ini menjelaskan persis bagaimana menggunakan ajax dengan hook_form_alter), tetapi jika Anda benar-benar tidak sabar, kode aktual ditampilkan di sekitar sini .
Jika Anda ingin melihat contoh langsung dari formulir yang diubah menggunakan ajax, ada satu di modul Contoh . Anda dapat menemukan hook yang sebenarnya di sini dan fungsi callback di sini .
Saya harap ini membantu. Jika tidak, beri kami lebih banyak latar belakang tentang kode Anda dan kami akan dapat memberi tahu Anda apa yang Anda lakukan salah.
sumber