diff --git flexifield-widget.inc flexifield-widget.inc index 96c8f20..4ef9258 100644 --- flexifield-widget.inc +++ flexifield-widget.inc @@ -28,6 +28,16 @@ function flexifield_fieldset_process($aElement, $aSubmittedElementData, $aFormSt if (isset($aElement['#value'][$sChildFieldName])) { $aFormState['values'][$sChildFieldName] = $aElement['#value'][$sChildFieldName]; } + // Child field item form element requirement depends on child field + // requirement, and child field item delta. We want it to depend on + // flexifield delta also, so we set up fake "required" property for the + // child field, that depends on flexifield delta. This way child field item + // form element becomes required if all the following conditions are met: + // child field is set to 'required' + // flexifield delta is 0 + // child field delta is 0 + $aChildFieldSettings['required'] = $aElement['#delta'] == 0 && $aChildFieldSettings['required']; + $aElement += (array) content_field_form($aForm, $aFormState, $aChildFieldSettings); drupal_alter('flexifield_child_field_form', $aElement[$sChildFieldName], $aForm, $aFormState, $aChildFieldSettings); if (isset($aElement[$sChildFieldName]['#theme']) && ($aElement[$sChildFieldName]['#theme'] === 'content_multiple_values')) {