You are here

function entity_browser_entity_form_reference_form_validate in Entity Browser 8.2

Same name and namespace in other branches
  1. 8 modules/entity_form/entity_browser_entity_form.module \entity_browser_entity_form_reference_form_validate()

Validates the form for adding existing entities.

TODO see if we can get away without overriding entire IEF function.

Parameters

array $reference_form: The reference entity form.

\Drupal\Core\Form\FormStateInterface $form_state: The form state of the parent form.

See also

inline_entity_form_reference_form_validate()

1 string reference to 'entity_browser_entity_form_reference_form_validate'
entity_browser_entity_form_inline_entity_form_reference_form_alter in modules/entity_form/entity_browser_entity_form.module
Implements hook_inline_entity_form_reference_form_alter().

File

modules/entity_form/entity_browser_entity_form.module, line 92
Hook implementations for entity_browser_entity_form.module.

Code

function entity_browser_entity_form_reference_form_validate(array &$reference_form, FormStateInterface $form_state) {
  $form_values = NestedArray::getValue($form_state
    ->getValues(), $reference_form['#parents']);
  if (empty($form_values['entity_browser']['entity_ids'])) {

    // The entity_id element is required, the value is empty only if
    // the form was cancelled.
    return;
  }
  $ief_id = $reference_form['#ief_id'];
  $labels = $reference_form['#ief_labels'];
  $attach_entities = EntityBrowserElement::processEntityIds($form_values['entity_browser']['entity_ids']);

  // Check if the entity is already referenced by the field.
  if (!empty($attach_entities)) {
    foreach ($attach_entities as $attach_entity) {
      foreach ($form_state
        ->get([
        'inline_entity_form',
        $ief_id,
        'entities',
      ]) as $key => $value) {
        if ($value['entity']
          ->getEntityTypeId() == $attach_entity
          ->getEntityTypeId() && $value['entity']
          ->id() == $attach_entity
          ->id()) {
          $form_state
            ->setError($reference_form['entity_browser'], t('The selected @label has already been added.', [
            '@label' => $labels['singular'],
          ]));
          $reference_form['entity_browser']['entity_ids']['#value'] = '';
        }
      }
    }
  }
}