You are here

public function QueueExampleForm::submitAddQueueItem in Examples for Developers 8

Submit function for the insert-into-queue button.

Parameters

array $form: Form definition array.

\Drupal\Core\Form\FormStateInterface $form_state: Form state object.

File

queue_example/src/Forms/QueueExampleForm.php, line 297

Class

QueueExampleForm
Form with examples on how to use queue.

Namespace

Drupal\queue_example\Forms

Code

public function submitAddQueueItem(array &$form, FormStateInterface $form_state) {

  // Get a queue (of the default type) called 'queue_example_queue'.
  // If the default queue class is SystemQueue this creates a queue that
  // stores its items in the database.
  $queue = $this->queueFactory
    ->get($form_state
    ->getValue('queue_name'));

  // There is no harm in trying to recreate existing.
  $queue
    ->createQueue();

  // Queue the string.
  $queue
    ->createItem($form_state
    ->getValue('string_to_add'));
  $count = $queue
    ->numberOfItems();
  $this
    ->messenger()
    ->addMessage($this
    ->t('Queued your string (@string_to_add). There are now @count items in the queue.', [
    '@count' => $count,
    '@string_to_add' => $form_state
      ->getValue('string_to_add'),
  ]));

  // Allows us to keep information in $form_state.
  $form_state
    ->setRebuild();

  // Unsetting the string_to_add allows us to set the incremented default
  // value for the user so they don't have to type anything.
  $form_state
    ->unsetValue('string_to_add');
  $form_state
    ->set('insert_counter', $count + 1);
}