You are here

protected function PaymentReferenceBase::buildPaymentForm in Payment 8.2

Builds the payment form.

Parameters

mixed[] $element: The root element.

\Drupal\Core\Form\FormStateInterface $form_state:

Return value

array A render array.

1 call to PaymentReferenceBase::buildPaymentForm()
PaymentReferenceBase::process in src/Element/PaymentReferenceBase.php
Implements form #process callback.

File

src/Element/PaymentReferenceBase.php, line 260

Class

PaymentReferenceBase
Provides a base for payment reference elements.

Namespace

Drupal\payment\Element

Code

protected function buildPaymentForm(array $element, FormStateInterface $form_state) {
  $build = array(
    // Set #parents, so the entity form display does not override it.
    '#parents' => array_merge($element['#parents'], array(
      'container',
      'payment_form',
    )),
    '#type' => 'container',
  );
  $plugin_selector = $this
    ->getPluginSelector($element, $form_state);

  /** @var \Drupal\payment\Plugin\Payment\Method\PaymentMethodInterface|null $selected_payment_method */
  $selected_payment_method = $plugin_selector
    ->getSelectedPlugin();
  $build['line_items'] = array(
    '#payment_line_items' => $this
      ->getPayment($element, $form_state),
    '#type' => 'payment_line_items_display',
  );
  $build['payment_method'] = $plugin_selector
    ->buildSelectorForm([], $form_state);
  if ($selected_payment_method && !$selected_payment_method
    ->getPaymentExecutionResult()
    ->isCompleted()) {
    $this
      ->disableChildren($build['payment_method']);
  }
  $this
    ->getEntityFormDisplay($element, $form_state)
    ->buildForm($this
    ->getPayment($element, $form_state), $build, $form_state);
  $build['pay_link'] = $this
    ->buildCompletePaymentLink($element, $form_state);
  $build['pay_link']['#access'] = !$selected_payment_method || !$selected_payment_method
    ->getPaymentExecutionResult()
    ->isCompleted();
  $build['pay_link']['#process'] = array(
    array(
      get_class($this),
      'processMaxWeight',
    ),
  );
  $plugin_id = $this
    ->getPluginId();
  $build['pay_button'] = array(
    '#ajax' => array(
      'callback' => [
        get_class(),
        'instantiate#ajaxPay#' . $plugin_id,
      ],
    ),
    '#limit_validation_errors' => array(
      array_merge($element['#parents'], array(
        'container',
        'payment_form',
      )),
    ),
    '#submit' => [
      [
        get_class(),
        'instantiate#pay#' . $plugin_id,
      ],
    ],
    '#type' => 'submit',
    '#value' => $this
      ->t('Pay'),
    '#process' => array(
      array(
        get_class($this),
        'processMaxWeight',
      ),
    ),
  );
  return $build;
}