function ConfigSync::submitForm

Same name and namespace in other branches
  1. 9 core/modules/config/src/Form/ConfigSync.php \Drupal\config\Form\ConfigSync::submitForm()
  2. 10 core/modules/config/src/Form/ConfigSync.php \Drupal\config\Form\ConfigSync::submitForm()
  3. 11.x core/modules/config/src/Form/ConfigSync.php \Drupal\config\Form\ConfigSync::submitForm()

Overrides FormInterface::submitForm

File

core/modules/config/src/Form/ConfigSync.php, line 350

Class

ConfigSync
Construct the storage changes in a configuration synchronization form.

Namespace

Drupal\config\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) {
    $config_importer = new ConfigImporter($form_state->get('storage_comparer'), $this->eventDispatcher, $this->configManager, $this->lock, $this->typedConfigManager, $this->moduleHandler, $this->moduleInstaller, $this->themeHandler, $this->getStringTranslation(), $this->moduleExtensionList);
    if ($config_importer->alreadyImporting()) {
        $this->messenger()
            ->addStatus($this->t('Another request may be synchronizing configuration already.'));
    }
    else {
        try {
            $sync_steps = $config_importer->initialize();
            $batch = [
                'operations' => [],
                'finished' => [
                    ConfigImporterBatch::class,
                    'finish',
                ],
                'title' => t('Synchronizing configuration'),
                'init_message' => t('Starting configuration synchronization.'),
                'progress_message' => t('Completed step @current of @total.'),
                'error_message' => t('Configuration synchronization has encountered an error.'),
            ];
            foreach ($sync_steps as $sync_step) {
                $batch['operations'][] = [
                    [
                        ConfigImporterBatch::class,
                        'process',
                    ],
                    [
                        $config_importer,
                        $sync_step,
                    ],
                ];
            }
            batch_set($batch);
        } catch (ConfigImporterException $e) {
            // There are validation errors.
            $this->messenger()
                ->addError($this->t('The configuration cannot be imported because it failed validation for the following reasons:'));
            foreach ($config_importer->getErrors() as $message) {
                $this->messenger()
                    ->addError($message);
            }
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.