You are here

public function ModalForm::validateForm in Modal 8.2

Same name and namespace in other branches
  1. 8.3 src/Form/ModalForm.php \Drupal\modal_page\Form\ModalForm::validateForm()
  2. 5.0.x src/Form/ModalForm.php \Drupal\modal_page\Form\ModalForm::validateForm()

Button-level validation handlers are highly discouraged for entity forms, as they will prevent entity validation from running. If the entity is going to be saved during the form submission, this method should be manually invoked from the button-level validation handler, otherwise an exception will be thrown.

Overrides ContentEntityForm::validateForm

File

src/Form/ModalForm.php, line 148

Class

ModalForm
Class: ModalForm.

Namespace

Drupal\modal_page\Form

Code

public function validateForm(array &$form, FormStateInterface $form_state) {
  parent::validateForm($form, $form_state);
  $values = $form_state
    ->getValues();
  $pages = $values['pages'][0]['value'];
  $url_list = !empty($pages) ? explode(PHP_EOL, $pages) : [];
  foreach ($url_list as $url) {
    $trim_url = trim($url);

    // Validate Slash.
    if ($trim_url !== '<front>' && $trim_url[0] !== '/' && $trim_url[0] !== '') {
      $form_state
        ->setErrorByName('pages', $this
        ->t("@url path needs to start with a slash.", [
        '@url' => $trim_url,
      ]));
    }

    // Validate wildcard.
    if (strpos($trim_url, '*') !== FALSE && substr($trim_url, -1) != '*') {
      $form_state
        ->setErrorByName('pages', $this
        ->t("The wildcard * must be used at the end of the path. E.g. /admin/*"));
    }
  }
}