function entity_reference_field_validate

Implements hook_field_validate().

File

drupal/core/modules/entity_reference/entity_reference.module, line 120
Provides a field that can reference other entities.

Code

function entity_reference_field_validate(EntityInterface $entity = NULL, $field, $instance, $langcode, $items, &$errors) {
  $ids = array();
  foreach ($items as $delta => $item) {
    if (!empty($item['target_id']) && !$item['entity'] && !$item['entity']
      ->isNew()) {
      $ids[$item['target_id']] = $delta;
    }
  }
  if ($ids) {
    $valid_ids = entity_reference_get_selection_handler($field, $instance, $entity)
      ->validateReferencableEntities(array_keys($ids));
    $invalid_entities = array_diff_key($ids, array_flip($valid_ids));
    if ($invalid_entities) {
      foreach ($invalid_entities as $id => $delta) {
        $errors[$field['field_name']][$langcode][$delta][] = array(
          'error' => 'entity_reference_invalid_entity',
          'message' => t('The referenced entity (@type: @id) does not exist.', array(
            '@type' => $field['settings']['target_type'],
            '@id' => $id,
          )),
        );
      }
    }
  }
}