You are here

public static function PaymentLineItemsInput::validate in Payment 8.2

Implements form #element_validate callback.

File

src/Element/PaymentLineItemsInput.php, line 235

Class

PaymentLineItemsInput
Provides a payment line items configuration element.

Namespace

Drupal\payment\Element

Code

public static function validate(array $element, FormStateInterface $form_state, array &$form) {

  // Reorder line items based on their weight elements.
  $line_items = [];
  $values = $form_state
    ->getValues();
  $values = NestedArray::getValue($values, $element['#parents']);
  if ($values['line_items']) {
    foreach ($values['line_items'] as $name => $line_item_values) {
      $line_items[$name] = $line_item_values['weight'];
    }
    asort($line_items);
    foreach (static::getLineItems($element, $form_state) as $line_item) {
      $line_items[$line_item
        ->getName()] = $line_item;
      $line_item
        ->validateConfigurationForm($element['line_items'][$line_item
        ->getName()]['plugin_form'], $form_state);

      // @todo Don't call the submit handler if plugin validation failed.
      $line_item
        ->submitConfigurationForm($element['line_items'][$line_item
        ->getName()]['plugin_form'], $form_state);
    }
    static::setLineItems($element, $form_state, array_values($line_items));
  }
}