API page: http://api.drupal.org/api/drupal/modules--field--field.api.php/function/...

Describe the problem you have found:

How should I distinguish errors betwen right form element when my widget has FIELD_BEHAVIOR_CUSTOM on 'multiple values' ?
In this case I do not receive $delta or anything else which could help me to find right $item with error

Comments

geshido’s picture

Component: documentation » field system
geshido’s picture

Title: Documentation problem with hook_field_widget_error » hook_field_widget_error how to handle FIELD_BEHAVIOR_CUSTOM on 'multiple values'
geshido’s picture

Status: Active » Closed (works as designed)

I have found the following solution, so it is not a bug :)

function mymodule_field_widget_error($element, $error, $form, &$form_state) {
  $field_state = field_form_get_state($form['#parents'], $element['#field_name'], 
    $element['#language'], $form_state);
  
  foreach ($field_state['errors'] as $delta => $errors) {
    foreach ($errors as $error) {
      switch ($error['error']) {
        case 'mymodule_error1':
          form_error($element[$delta]['subelement1'], $error['message']);
          break;
        case 'mymodule_error2':
          form_error($element[$delta]['subelement2'], $error['message']);
          break;
      }      
    }
  }
}