You are here

public function BulkCreationEntityFormTrait::save in Varbase Media 8.7

Same name and namespace in other branches
  1. 9.0.x modules/entity_browser_generic_embed/src/Form/BulkCreationEntityFormTrait.php \Drupal\entity_browser_generic_embed\Form\BulkCreationEntityFormTrait::save()

File

modules/entity_browser_generic_embed/src/Form/BulkCreationEntityFormTrait.php, line 18

Class

BulkCreationEntityFormTrait
Implements a redirect chain in entity forms for bulk entity creation.

Namespace

Drupal\entity_browser_generic_embed\Form

Code

public function save(array $form, FormStateInterface $form_state) {
  parent::save($form, $form_state);
  $query = $this
    ->getRequest()->query;
  if ($query
    ->has('bulk_create')) {

    /** @var \Drupal\Core\Entity\EntityInterface $entity */
    $entity = $this
      ->getEntity();

    // If there are more entities to create, redirect to the edit form for the
    // next one in line.
    $queue = $query
      ->get('bulk_create', []);
    if (is_array($queue)) {
      $id = array_shift($queue);
      $redirect = $this->entityTypeManager
        ->getStorage($entity
        ->getEntityTypeId())
        ->load($id)
        ->toUrl('edit-form', [
        'query' => [
          'bulk_create' => $queue ?: TRUE,
        ],
      ]);
      $form_state
        ->setRedirectUrl($redirect);
    }
    else {
      try {
        $form_state
          ->setRedirectUrl($entity
          ->toUrl('collection'));
      } catch (UndefinedLinkTemplateException $e) {

        // The entity type does not declare a collection, so don't do
        // anything.
      }
    }
  }
}