diff --git a/conditional_fields.module b/conditional_fields.module index 23b8cb2..64991fe 100644 --- a/conditional_fields.module +++ b/conditional_fields.module @@ -234,8 +234,21 @@ function conditional_fields_element_info_alter(&$types) { function conditional_fields_element_after_build($element, &$form_state) { // Ensure that the form being built is an entity. if (!isset($form_state['complete form']['#entity_type'], $form_state['complete form']['#bundle'])) { + // There can be entities attached in lower level (maybe full tree traversal is needed to discover entities?) + foreach ($form_state['complete form'] as $complete_key => $complete_elem) { + if (!is_array($complete_elem)) { + continue; + } + if (isset($form_state['complete form'][$complete_key]['#entity_type'], $form_state['complete form'][$complete_key]['#bundle'])) { + $form_state['complete form']['#entity_type'] = $form_state['complete form'][$complete_key]['#entity_type']; + $form_state['complete form']['#bundle'] = $form_state['complete form'][$complete_key]['#bundle']; + break; + } + } + if (!isset($form_state['complete form']['#entity_type'], $form_state['complete form']['#bundle'])) { return $element; } + } // Avoid processing fields in fields_ui administration pages. if (drupal_substr($form_state['complete form']['#form_id'], 0, 9) == 'field_ui_') {