You are here

function unique_field_ajax_validate_unique in Unique field ajax 8

Same name and namespace in other branches
  1. 2.x unique_field_ajax.module \unique_field_ajax_validate_unique()

Ajax callback to validate the email field.

1 string reference to 'unique_field_ajax_validate_unique'
unique_field_ajax_field_widget_form_alter in ./unique_field_ajax.module
Attaching data to unique fields.

File

./unique_field_ajax.module, line 204
Unique value for cck fields check module.

Code

function unique_field_ajax_validate_unique($element, FormStateInterface $form_state, array $form) {
  $entity = $form_state
    ->getFormObject()
    ->getEntity();

  // If !isset langcode set it to 0.
  $langcode = !empty($form_state
    ->getValues()['langcode'][0]['value']) && $form_state
    ->getValues()['langcode'][0]['value'] ? $form_state
    ->getValues()['langcode'][0]['value'] : '0';
  $field_name = $element['#unique_field_ajax_settings']['field_name'];
  $field_definition = $element['#unique_field_ajax_settings']['field_definition'];
  $field_label = $field_definition
    ->label();
  $value = $form_state
    ->getValue($field_name);
  $entity_type = $entity
    ->getEntityTypeId();

  // If field is not unique set error.
  $valid = unique_field_ajax_is_unique($entity_type, $langcode, $field_name, $value[0]['value'], $entity
    ->bundle(), $element['#unique_field_ajax_settings']['per_lang'], $entity);
  if (!$valid) {
    $form_state
      ->setErrorByName($field_name, t('The field @field_label has to be unique.', array(
      '@field_label' => $field_label,
    )));
    $form_state
      ->setRebuild();
  }
}