You are here

public function ConfigForm::validateForm in Color API 8

Form validation handler.

Parameters

array $form: An associative array containing the structure of the form.

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

Overrides FormBase::validateForm

File

src/Form/ConfigForm.php, line 99

Class

ConfigForm
Form definition for the Color API module configuration page.

Namespace

Drupal\colorapi\Form

Code

public function validateForm(array &$form, FormStateInterface $form_state) {
  if ($this->entityTypeManager
    ->hasDefinition('colorapi_color') && !$form_state
    ->getValue('enable_color_entity') && $this->entityTypeManager
    ->getStorage('colorapi_color')
    ->hasData()) {
    $form_state
      ->setError($form['enable_color_entity'], $this
      ->t('You have Color entity data in the database, and must delete the content before you can disable the Color entity type.'));
  }
  if (!$form_state
    ->getValue('enable_color_field')) {
    $field_info = $this->entityFieldManager
      ->getFieldMapByFieldType('colorapi_color_field');
    $fields = [];
    if (count($field_info)) {
      foreach (array_keys($field_info) as $entity_type) {
        foreach (array_keys($field_info[$entity_type]) as $field_name) {
          $fields[] = $entity_type . '.' . $field_name;
        }
      }
    }
    if (count($fields)) {
      if (count($fields) === 1) {
        $form_state
          ->setErrorByName('enable_color_field', $this
          ->t('The Color field cannot be disabled until the following Color field has been deleted: %field', [
          '%field' => array_pop($fields),
        ]));
      }
      else {
        $string = '<ul>';
        $vars = [];
        foreach ($fields as $index => $field) {
          $string .= '<li>@value' . $index . '</li>';
          $vars['@value' . $index] = $field;
        }
        $sring .= '</ul>';
        $list = new FormattableMarkup($string, $vars);
        $form_state
          ->setErrorByName('enable_color_field', $this
          ->t('The following fields are Color fields, so the Color Field cannot be disabled until they have been deleted: @field', [
          '@field' => $list,
        ]));
      }
    }
  }
}