function _unique_field_ajax_process in Unique field ajax 8
Same name and namespace in other branches
- 2.x unique_field_ajax.module \_unique_field_ajax_process()
Attach ajax to unique field.
Parameters
$element:
\Drupal\Core\Form\FormStateInterface $form_state:
$form:
Return value
mixed
1 string reference to '_unique_field_ajax_process'
- unique_field_ajax_field_widget_form_alter in ./
unique_field_ajax.module - Attaching data to unique fields.
File
- ./
unique_field_ajax.module, line 160 - Unique value for cck fields check module.
Code
function _unique_field_ajax_process($element, FormStateInterface &$form_state, &$form) {
$field_name = $element['value']['#unique_field_ajax_settings']['field_name'];
$field_definition = $element['value']['#unique_field_ajax_settings']['field_definition'];
$field_label = $field_definition
->label();
$wrapper = 'unique-' . $field_name;
if (!empty($form['#attached']['library']) && !in_array('unique_field_ajax/unique_event', $form['#attached']['library'])) {
$form['#attached']['library'][] = 'unique_field_ajax/unique_event';
}
$settings = array(
'id' => '#' . $wrapper . ' input',
);
$form['#attached']['drupalSettings']['unique_field_ajax'][] = $settings;
$element['value']['#ajax'] = [
'callback' => '_unique_field_ajax',
'event' => 'finishedinput',
'wrapper' => $wrapper,
'progress' => array(
'type' => 'throbber',
'message' => t('Verifying @field_label...', array(
'@field_label' => $field_label,
)),
),
];
$element['value']['#prefix'] = '<div id="' . $wrapper . '">';
$element['value']['#suffix'] = '</div>';
$value = $form_state
->getValue($field_name);
$value = !empty($value) ? $value[0]['value'] : NULL;
$entity = $form_state
->getFormObject()
->getEntity();
$entity_type = $entity
->getEntityTypeId();
$langcode = !empty($form_state
->getValues()['langcode'][0]['value']) ? $form_state
->getValues()['langcode'][0]['value'] : '0';
$valid = unique_field_ajax_is_unique($entity_type, $langcode, $field_name, $value, $entity
->bundle(), $element['value']['#unique_field_ajax_settings']['per_lang'], $entity);
$message = $field_definition
->getThirdPartySetting('unique_field_ajax', 'message');
if (empty($message)) {
$message = t('This field has to be unique.');
}
if (!$valid) {
$element['value']['#attributes']['class'][] = 'error';
$element['value']['#attributes']['aria-invalid'] = 'true';
$element['value']['#suffix'] = '<div class="error">' . $message . '</div>' . $element['value']['#suffix'];
}
return $element;
}