Skip to main content
2 of 3
more accuracy
UltraBob
  • 1.3k
  • 9
  • 37

With thanks to @jaypan for trying to help me figure this out. I finally have a solution! Googling for the error message I was getting Invalid form POST data led me to lots of other issues people were having, but not the one I was having. My problem was very simple! I should not have been setting $form_state['rebuild'] to TRUE.

Doing that caused form_set_cache() to never be called, and therefore for drupal to quietly (with a watchdog entry) bail out of the ajax call and not return a response beyond the headers.

After ajax started working I was able to determine that the variable I was using to check the value of the field was wrong too, and now that I've fixed that, it all works. Here is the working code:

/**
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function missions_form_mission_request_node_form_alter(&$form, &$form_state, $form_id)
{
  $form['field_mr_home_leave'][LANGUAGE_NONE]['#ajax'] = array(
    'callback' => 'missions_hide_home_leave_toggle',
    'wrapper' => 'itinerary-section',
  );
  $form['field_mr_fc_itineraries']['#prefix'] = '<div id="itinerary-section">';
  $form['field_mr_fc_itineraries']['#suffix'] = '</div>';
  if ((!empty($form_state['values']['field_mr_home_leave']) && $form_state['values']['field_mr_home_leave'][LANGUAGE_NONE][0]['value'] == 1) || (empty($form_state['values']['field_mr_home_leave']) && $form['field_mr_home_leave'][LANGUAGE_NONE]['#default_value'] == 1)) {
    $home_leave_toggle_access = true;
  } else {
    $home_leave_toggle_access = false;
  }
  foreach ($form['field_mr_fc_itineraries'][LANGUAGE_NONE] as $key => &$itinerary) {
    if (is_integer($key)) {
      foreach ($itinerary['field_mr_fc_legs'][LANGUAGE_NONE] as $key => &$leg) {
        if (is_integer($key)) {
          $leg['field_mr_fc_leg_home_leave']['#access'] = $home_leave_toggle_access;
        }
      }
    }
  }

}

function missions_hide_home_leave_toggle($form, $form_state) {
  return $form['field_mr_fc_itineraries'];
}

I hope this helps someone else not spend 3 days trying to debug this. :(

UltraBob
  • 1.3k
  • 9
  • 37