You are here

public static function PaymentLineItemsInput::addMoreSubmit in Payment 8.2

Implements form #submit callback.

File

src/Element/PaymentLineItemsInput.php, line 258

Class

PaymentLineItemsInput
Provides a payment line items configuration element.

Namespace

Drupal\payment\Element

Code

public static function addMoreSubmit(array &$form, FormStateInterface $form_state) {
  $triggering_element = $form_state
    ->getTriggeringElement();
  $parents = array_slice($triggering_element['#array_parents'], 0, -2);
  $root_element = NestedArray::getValue($form, $parents);
  $values = $form_state
    ->getValues();
  $values = NestedArray::getValue($values, array_slice($triggering_element['#parents'], 0, -2));
  $line_item = \Drupal::service('plugin.manager.payment.line_item')
    ->createInstance($values['add_more']['type']);
  $line_item
    ->setName(static::createLineItemName($root_element, $form_state, $values['add_more']['type']));
  $line_items = static::getLineItems($root_element, $form_state);
  $line_items[] = $line_item;
  static::setLineItems($root_element, $form_state, $line_items);
  $form_state
    ->setRebuild();
}