public function ModulesListForm::submitForm in Drupal 8
Same name and namespace in other branches
- 9 core/modules/system/src/Form/ModulesListForm.php \Drupal\system\Form\ModulesListForm::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/ ModulesListForm.php, line 435
Class
- ModulesListForm
- Provides module installation interface.
Namespace
Drupal\system\FormCode
public function submitForm(array &$form, FormStateInterface $form_state) {
// Retrieve a list of modules to install and their dependencies.
$modules = $this
->buildModuleList($form_state);
// Redirect to a confirmation form if needed.
if (!empty($modules['experimental']) || !empty($modules['dependencies'])) {
$route_name = !empty($modules['experimental']) ? 'system.modules_list_experimental_confirm' : 'system.modules_list_confirm';
// Write the list of changed module states into a key value store.
$account = $this
->currentUser()
->id();
$this->keyValueExpirable
->setWithExpire($account, $modules, 60);
// Redirect to the confirmation form.
$form_state
->setRedirect($route_name);
// We can exit here because at least one modules has dependencies
// which we have to prompt the user for in a confirmation form.
return;
}
// Install the given modules.
if (!empty($modules['install'])) {
try {
$this->moduleInstaller
->install(array_keys($modules['install']));
$module_names = array_values($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),
]));
} 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' => $modules['install'][$e
->getExtension()],
]));
return;
} catch (UnmetDependenciesException $e) {
$this
->messenger()
->addError($e
->getTranslatedMessage($this
->getStringTranslation(), $modules['install'][$e
->getExtension()]));
return;
}
}
}