You are here

public function SiteSettingsForm::validateForm in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Installer/Form/SiteSettingsForm.php \Drupal\Core\Installer\Form\SiteSettingsForm::validateForm()

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

core/lib/Drupal/Core/Installer/Form/SiteSettingsForm.php, line 156

Class

SiteSettingsForm
Provides a form to configure and rewrite settings.php.

Namespace

Drupal\Core\Installer\Form

Code

public function validateForm(array &$form, FormStateInterface $form_state) {
  $driver = $form_state
    ->getValue('driver');
  $database = $form_state
    ->getValue($driver);
  $drivers = drupal_get_database_types();
  $reflection = new \ReflectionClass($drivers[$driver]);
  $install_namespace = $reflection
    ->getNamespaceName();

  // Cut the trailing \Install from namespace.
  $database['namespace'] = substr($install_namespace, 0, strrpos($install_namespace, '\\'));
  $database['driver'] = $driver;

  // See default.settings.php for an explanation of the 'autoload' key.
  if ($autoload = Database::findDriverAutoloadDirectory($database['namespace'], DRUPAL_ROOT)) {
    $database['autoload'] = $autoload;
  }
  $form_state
    ->set('database', $database);
  foreach ($this
    ->getDatabaseErrors($database, $form_state
    ->getValue('settings_file')) as $name => $message) {
    $form_state
      ->setErrorByName($name, $message);
  }
}