You are here

public function ModulesListConfirmForm::submitForm in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/system/src/Form/ModulesListConfirmForm.php \Drupal\system\Form\ModulesListConfirmForm::submitForm()
  2. 10 core/modules/system/src/Form/ModulesListConfirmForm.php \Drupal\system\Form\ModulesListConfirmForm::submitForm()

Form submission 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 FormInterface::submitForm

File

core/modules/system/src/Form/ModulesListConfirmForm.php, line 161

Class

ModulesListConfirmForm
Builds a confirmation form for enabling modules with dependencies.

Namespace

Drupal\system\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) {

  // Remove the key value store entry.
  $account = $this
    ->currentUser()
    ->id();
  $this->keyValueExpirable
    ->delete($account);
  if (!empty($this->modules['install'])) {

    // Don't catch the exception that this can throw for missing dependencies:
    // the form doesn't allow modules with unmet dependencies, so the only way
    // this can happen is if the filesystem changed between form display and
    // submit, in which case the user has bigger problems.
    try {

      // Install the given modules.
      $this->moduleInstaller
        ->install(array_keys($this->modules['install']));
    } catch (PreExistingConfigException $e) {
      $config_objects = $e
        ->flattenConfigObjects($e
        ->getConfigObjects());
      $this
        ->messenger()
        ->addError($this
        ->formatPlural(count($config_objects), 'Unable to install @extension, %config_names already exists in active configuration.', 'Unable to install @extension, %config_names already exist in active configuration.', [
        '%config_names' => implode(', ', $config_objects),
        '@extension' => $this->modules['install'][$e
          ->getExtension()],
      ]));
      return;
    } catch (UnmetDependenciesException $e) {
      $this
        ->messenger()
        ->addError($e
        ->getTranslatedMessage($this
        ->getStringTranslation(), $this->modules['install'][$e
        ->getExtension()]));
      return;
    }

    // Unset the messenger to make sure that we'll get the service from the
    // new container.
    $this->messenger = NULL;
    $module_names = array_values($this->modules['install']);
    $this
      ->messenger()
      ->addStatus($this
      ->formatPlural(count($module_names), 'Module %name has been enabled.', '@count modules have been enabled: %names.', [
      '%name' => $module_names[0],
      '%names' => implode(', ', $module_names),
    ]));
  }
  $form_state
    ->setRedirectUrl($this
    ->getCancelUrl());
}