1 EntityReferenceSelectionHandlerViews.inc public EntityReferenceSelectionHandlerViews::validateAutocompleteInput($input, &$element, &$form_state, $form)

Implements EntityReferenceHandler::validateAutocompleteInput().

Overrides EntityReferenceSelectionHandlerInterface::validateAutocompleteInput

File

core/modules/entityreference/plugins/selection/EntityReferenceSelectionHandlerViews.inc, line 174

Class

EntityReferenceSelectionHandlerViews
Entity handler for Views.

Code

public function validateAutocompleteInput($input, &$element, &$form_state, $form) {
  $bundled_entities = $this->getReferencableEntities($input, '=', 6);
  $entities = array();
  foreach ($bundled_entities as $entities_list) {
    $entities += $entities_list;
  }
  if (empty($entities)) {
    // Error if there are no entities available for a required field.
    form_error($element, t('No items found for %label', array('%label' => $element['#title'])));
  }
  elseif (count($entities) > 5) {
    // Error if there are more than 5 matching entities.
    form_error($element, t('Too many items found for %label. Specify the one you want by appending the id in parentheses, like "@value (@id)"', array(
      '%label' => $element['#title'],
      '@value' => $input,
      '@id' => key($entities),
    )));
  }
  elseif (count($entities) > 1) {
    // More helpful error if there are only a few matching entities.
    $multiples = array();
    foreach ($entities as $id => $name) {
      $multiples[] = filter_xss($name, array()) . ' (' . (int) $id . ')';
    }
    form_error($element, t('Multiple items found for %label: !multiple', array(
      '%label' => $element['#title'],
      '!multiple' => theme('item_list', array('items' => $multiples)),
    )));
  }
  else {
    // Take the one and only matching entity.
    return (int) key($entities);
  }
}