I have a commerce Product content type, which has a field collection field attached to it field_mycollection, which has 4 different fields field1, field2, field3 and field4 dependent on each other. Like field2 will be filled based on field1 selected, field3 will be filled based on field2 selected and field4 is dependent on field3. #ajax is used for this.
My Content |_ field_mycollection |_ field_field1 |_ field_field2 |_ field_field3 |_ field_field4
It is working fine for me for one set of field collection. But I have unlimited option enabled for field collection. It is not working for that.
How could I achieve this goal? I did it using hook_form_FORM_ID_alter().
How to manage edit form ?
My code is :
foreach ($form['field_part_details']['und'] as $key => $fc_mycollection) { if (is_numeric($key)) { $options_first = custom_get_first_dropdown_options(); $year = isset($form_state['values']['field_part_details']['und'][$key]['field_year']['und'][$key]['tid']) ? $form_state['values']['field_part_details']['und'][$key]['field_year']['und'][$key]['tid'] : key($options_first); $make = isset($form_state['values']['field_part_details']['und'][$key]['field_make']['und'][$key]['tid']) ? $form_state['values']['field_part_details']['und'][$key]['field_make']['und'][$key]['tid'] : ''; $html_id_first = drupal_html_id('dropdown-first-replace'); $form['field_part_details']['und'][$key]['field_year']['und']['#ajax'] = array( 'callback' => 'custom_dependent_dropdown_callback_year', 'wrapper' => $html_id_first, ); $form['field_part_details']['und'][$key]['field_make']['und']['#options'] = get_second_dropdown_options($year, 'year'); $form['field_part_details']['und'][$key]['field_model']['und']['#options'] = get_second_dropdown_options($make, 'make'); $form['field_part_details']['und'][$key]['field_make']['und']['#prefix'] = '<div id="'. $html_id_first .'">'; $form['field_part_details']['und'][$key]['field_make']['und']['#suffix'] = '</div>'; } }
Callback Code is :
function custom_dependent_dropdown_callback_year($form, $form_state) { return $form['field_part_details']['und'][0]['field_make']; }
Any help is appreciated.