You are here

trait BulkCreationEntityFormTrait 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

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

Made by Lightning Core team.

Hierarchy

File

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

Namespace

Drupal\entity_browser_generic_embed\Form
View source
trait BulkCreationEntityFormTrait {

  /**
   * {@inheritdoc}
   */
  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.
        }
      }
    }
  }

}

Members