You are here

public function ChangeSyncForm::submitForm in Demonstration site (Sandbox / Snapshot) 8

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

src/Form/ChangeSyncForm.php, line 321

Class

ChangeSyncForm
Construct the storage changes in a configuration synchronization form.

Namespace

Drupal\demo\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());
  if ($config_importer
    ->alreadyImporting()) {
    \Drupal::messenger()
      ->addMessage($this
      ->t('Another request may be synchronizing configuration already.'));
  }
  else {
    try {
      $sync_steps = $config_importer
        ->initialize();
      $batch = [
        'operations' => [],
        'finished' => [
          get_class($this),
          'finishBatch',
        ],
        '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.'),
        'file' => __DIR__ . '/../../config.admin.inc',
      ];
      foreach ($sync_steps as $sync_step) {
        $batch['operations'][] = [
          [
            get_class($this),
            'processBatch',
          ],
          [
            $config_importer,
            $sync_step,
          ],
        ];
      }
      batch_set($batch);
    } catch (ConfigImporterException $e) {

      // There are validation errors.
      \Drupal::messenger()
        ->addError($this
        ->t('The configuration cannot be imported because it failed validation for the following reasons:'));
      foreach ($config_importer
        ->getErrors() as $message) {
        \Drupal::messenger()
          ->addMessage($message);
      }
    }
  }
}