From daa166ad5e5f17d07d672a12fa8659f5fa0c6d65 Mon Sep 17 00:00:00 2001 From: ajstanley Date: Tue, 4 Feb 2025 13:58:32 +0000 Subject: [PATCH] added validator --- src/Form/DoiPrepopulateForm.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/Form/DoiPrepopulateForm.php b/src/Form/DoiPrepopulateForm.php index ab8062c..bdf9537 100644 --- a/src/Form/DoiPrepopulateForm.php +++ b/src/Form/DoiPrepopulateForm.php @@ -72,6 +72,23 @@ final class DoiPrepopulateForm extends FormBase { return 'doi_prefill_doi_prepopulate'; } + /** + * {@inheritdoc} + */ + public function validateForm(array &$form, FormStateInterface $form_state) { + parent::validateForm($form, $form_state); + $doi = trim($form_state->getValue('doi')); + if (!empty($doi)) { + $existing_nodes = \Drupal::entityTypeManager()->getStorage('node')->loadByProperties([ + 'field_doi' => $doi, + ]); + + if (!empty($existing_nodes)) { + $form_state->setErrorByName('doi', $this->t('A node with this DOI already exists.')); + } + } + } + /** * {@inheritdoc} */ @@ -134,6 +151,10 @@ final class DoiPrepopulateForm extends FormBase { */ public function submitForm(array &$form, FormStateInterface $form_state): void { $doi = trim($form_state->getValue('doi')); + $existing_nodes = $this->entityTypeManager->getStorage('node')->loadByProperties([ + 'field_doi' => $doi, + ]); + $collection = $form_state->getValue('collection'); $nid = $this->nodeBuilder->buildNode($collection, $doi);