function ajax_example_simplest($form, &$form_state) {
//This is my ajax trigger element
$form['element_trigger'] = array(
'#type' => 'select',
'#options' => array(
'one' => 'one',
'two' => 'two',
'three' => 'three',
),
'#ajax' => array(
'callback' => 'ajax_example_simplest_callback',
/** Q: Can I somehow declare more than one wrapper? **/
//Say for instance, something like:
'wrapper' => array('replace_div_1', 'replace_div_2'),
),
);
//replace_div_1
$form['element_to_be_replaced_1'] = array(
'#type' => 'textfield',
'#title' => t("My conditional field one"),
'#prefix' => '<div id="replace_div_1">',
'#suffix' => '</div>',
);
//... more form elements here
//replace_div_2
$form['element_to_be_replaced_2'] = array(
'#type' => 'textfield',
'#title' => t("My conditional field two"),
'#prefix' => '<div id="replace_div_2">',
'#suffix' => '</div>',
);
return $form;
}
function ajax_example_simplest_callback($form, $form_state) {
//... do my stuff here
//normally I would return only the form bit for replacing a single wrapper
//declared in the trigger element, like this:
return $form['element_to_be_replaced_blahblah'];
}
Apakah mungkin untuk mengembalikan lebih dari satu bentuk bit dalam fungsi panggilan balik yang memberitahukan kerangka kerja AJAX yang $form['element_to_be_replaced_1']
harus diganti <div id="replace_div_1">
dan $form['element_to_be_replaced_2']
harus diganti <div id="replace_div_2">
?
Drupal 8 sintaks alternatif
Satu perbedaan adalah bahwa perintah render dijatuhkan, karena AjaxResponse mengimplementasikan Drupal \ Core \ Render \ AttachmentsInterface
render($ form ['element_to_be_replaced_1'])Menambahkan render masih berfungsi, tapi saya punya masalah saat memperbarui TableSelect Table seperti itu.
sumber
Jawaban Pierre Buyle tidak berhasil untuk saya. Namun, sesuatu seperti yang berikut ini berhasil.
Perhatikan panggilan ke ajax_deliver () , daripada mengembalikan array perintah AJAX.
sumber