You are here

public function BatchStorage::create in Drupal 9

Same name in this branch
  1. 9 core/lib/Drupal/Core/Batch/BatchStorage.php \Drupal\Core\Batch\BatchStorage::create()
  2. 9 core/lib/Drupal/Core/ProxyClass/Batch/BatchStorage.php \Drupal\Core\ProxyClass\Batch\BatchStorage::create()
Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Batch/BatchStorage.php \Drupal\Core\Batch\BatchStorage::create()

Creates and saves a batch.

Parameters

array $batch: The array representing the batch to create.

Overrides BatchStorageInterface::create

File

core/lib/Drupal/Core/Batch/BatchStorage.php, line 123

Class

BatchStorage

Namespace

Drupal\Core\Batch

Code

public function create(array $batch) {

  // Ensure that a session is started before using the CSRF token generator.
  $this->session
    ->start();
  $try_again = FALSE;
  try {

    // The batch table might not yet exist.
    $this
      ->doCreate($batch);
  } catch (\Exception $e) {

    // If there was an exception, try to create the table.
    if (!($try_again = $this
      ->ensureTableExists())) {

      // If the exception happened for other reason than the missing table,
      // propagate the exception.
      throw $e;
    }
  }

  // Now that the table has been created, try again if necessary.
  if ($try_again) {
    $this
      ->doCreate($batch);
  }
}