public function PaymentReferenceBase::process in Payment 8.2
Implements form #process callback.
File
- src/
Element/ PaymentReferenceBase.php, line 190
Class
- PaymentReferenceBase
- Provides a base for payment reference elements.
Namespace
Drupal\payment\ElementCode
public function process(array &$element, FormStateInterface $form_state, array $form) {
// Set internal configuration.
$element['#available_payment_id'] = NULL;
$element['#element_validate'] = [
[
$this,
'elementValidate',
],
];
$element['#theme_wrappers'] = array(
'form_element',
);
$element['#tree'] = TRUE;
// Validate the element's configuration.
if (!is_int($element['#default_value']) && !is_null($element['#default_value'])) {
throw new \InvalidArgumentException('#default_value must be an integer or NULL, but ' . gettype($element['#default_value']) . ' was given.');
}
if (!is_null($element['#limit_allowed_plugin_ids']) && !is_array($element['#limit_allowed_plugin_ids'])) {
throw new \InvalidArgumentException('#limit_allowed_plugin_ids must be an array or NULL, but ' . gettype($element['#limit_allowed_plugin_ids']) . ' was given.');
}
if (!is_string($element['#queue_category_id'])) {
throw new \InvalidArgumentException('#queue_category_id must be a string, but ' . gettype($element['#queue_category_id']) . ' was given.');
}
if (!is_int($element['#queue_owner_id'])) {
throw new \InvalidArgumentException('#queue_owner_id must be an integer, but ' . gettype($element['#queue_owner_id']) . ' was given.');
}
if (!is_string($element['#plugin_selector_id'])) {
throw new \InvalidArgumentException('#plugin_selector_id must be a string, but ' . gettype($element['#plugin_selector_id']) . ' was given.');
}
if (!$element['#prototype_payment'] instanceof PaymentInterface) {
throw new \InvalidArgumentException('#prototype_payment must implement \\Drupal\\payment\\Entity\\PaymentInterface.');
}
// Find the default payment to use.
if (!$element['#default_value']) {
$payment_ids = $this
->getPaymentQueue()
->loadPaymentIds($element['#queue_category_id'], $element['#queue_owner_id']);
$element['#available_payment_id'] = $payment_ids ? reset($payment_ids) : NULL;
}
// AJAX.
$ajax_wrapper_id = Html::getClass('payment_reference-' . $element['#name']);
$element['container'] = array(
'#attached' => [
'drupalSettings' => [
'PaymentReferencePaymentAvailable' => [
$ajax_wrapper_id => $element['#default_value'] || $element['#available_payment_id'],
],
],
'library' => [
'payment/payment_reference',
],
],
'#id' => $ajax_wrapper_id,
'#type' => 'container',
);
$element['container']['payment_form'] = $this
->buildPaymentForm($element, $form_state);
$element['container']['payment_form']['#access'] = !$element['#default_value'] && !$element['#available_payment_id'];
$element['container']['payment_view'] = $this
->buildPaymentView($element, $form_state);
$element['container']['payment_view']['#access'] = $element['#default_value'] || $element['#available_payment_id'];
$element['container']['refresh'] = $this
->buildRefreshButton($element, $form_state);
return $element;
}