- Issue created by @koosvdkolk
- 🇳🇱Netherlands koosvdkolk
Got it to work:
/** * Implements hook_inline_entity_form_entity_form_alter. * * @return void */ function my_module_inline_entity_form_entity_form_alter(&$entity_form, &$form_state) { if ($entity_form['#entity_type'] == 'my_entity_type' && $entity_form['#bundle'] == 'my_entity_bundle') { $element_id = join('_', $entity_form['#parents']); // Obtain unique id for the wrapper $entity_form['select_a']['widget']['#ajax'] = [ 'callback' => 'my_module_form_select_update_ajax_callback', 'event' => 'change', 'wrapper' => $element_id, ]; $entity_form['select_b']['#prefix'] = '<div id="'. $element_id .'">'; $entity_form['select_b']['#suffix'] = '</div>'; } } /** * Ajax callback. * * @param array $complete_form * @param \Drupal\Core\Form\FormStateInterface $form_state * * @return array */ function my_module_form_select_update_ajax_callback(array &$complete_form, \Drupal\Core\Form\FormStateInterface $form_state) { $select_a_form_element = $form_state->getTriggeringElement(); $selected_entity_id = (int) $select_a_form_element['#value']; // Find select b in the form. $form_part = NestedArray::getValue($complete_form, array_slice($select_a_form_element['#array_parents'], 0, -2)); $select_b_form_element = $form_part['select_b']; // Get options. $options = []; if ($selected_entity_id>=0) { // Add options here based on the entity id. } // Return new select b. $select_b_form_element['widget']['#options'] = $options; return $select_b_form_element; }
- Status changed to Needs review
over 1 year ago 11:22am 11 October 2023