function unique_field_ajax_validate_unique in Unique field ajax 2.x
Same name and namespace in other branches
- 8 unique_field_ajax.module \unique_field_ajax_validate_unique()
Element Validate callback to validate a field.
Throws
\Drupal\Component\Plugin\Exception\PluginNotFoundException
\Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
\Drupal\Core\Entity\EntityMalformedException
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 478 - Unique value for cck fields check module.
Code
function unique_field_ajax_validate_unique($element, FormStateInterface $form_state, array $form) {
$field_definition = $element['#unique_field_ajax_settings']['field_definition'];
$property = $field_definition
->getFieldStorageDefinition()
->getMainPropertyName();
$entity = $form_state
->getFormObject()
->getEntity();
// If !isset lang_code 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'];
$value = $form_state
->getValue($field_name);
$entity_type = $entity
->getEntityTypeId();
$per_lang = $element['#unique_field_ajax_settings']['per_lang'];
// If field is not unique set error.
$valid = unique_field_ajax_is_unique($entity_type, $langcode, $field_name, $value[0][$property], $entity
->bundle(), $per_lang, $entity);
$message = unique_field_ajax_custom_message($entity, $element, $valid, $property, FALSE);
if ($valid !== TRUE) {
$form_state
->setErrorByName($field_name, $message);
$form_state
->setRebuild();
}
}