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\ElementCode
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;
}