public function PaymentLineItemsDisplay::preRender in Payment 8.2
Implements form #pre_render callback.
Throws
\InvalidArgumentException
File
- src/
Element/ PaymentLineItemsDisplay.php, line 75
Class
- PaymentLineItemsDisplay
- Provides an element to display payment line items.
Namespace
Drupal\payment\ElementCode
public function preRender(array $element) {
if (!isset($element['#payment_line_items']) || !$element['#payment_line_items'] instanceof LineItemCollectionInterface) {
throw new \InvalidArgumentException(sprintf('#payment_line_items must be an instance of %s.', LineItemCollectionInterface::class));
}
$element['table'] = array(
'#empty' => $this
->t('There are no line items.'),
'#header' => array(
$this
->t('Description'),
$this
->t('Quantity'),
$this
->t('Amount'),
$this
->t('Total'),
),
'#type' => 'table',
);
/** @var \Drupal\payment\LineItemCollectionInterface $payment_line_items */
$payment_line_items = $element['#payment_line_items'];
foreach ($payment_line_items
->getLineItems() as $delta => $payment_line_item) {
/** @var \Drupal\currency\Entity\CurrencyInterface $currency */
$currency = $this->currencyStorage
->load($payment_line_item
->getCurrencyCode());
$element['table']['line_item_' . $payment_line_item
->getName()] = array(
'#attributes' => array(
'class' => array(
'payment-line-item',
'payment-line-item-name-' . $payment_line_item
->getName(),
'payment-line-item-plugin-' . $payment_line_item
->getPluginId(),
),
),
'description' => array(
'#attributes' => array(
'class' => array(
'payment-line-item-description',
),
),
'#markup' => $payment_line_item
->getDescription(),
),
'quantity' => array(
'#attributes' => array(
'class' => array(
'payment-line-item-quantity',
),
),
'#markup' => $payment_line_item
->getQuantity(),
),
'amount' => array(
'#attributes' => array(
'class' => array(
'payment-line-item-amount',
),
),
'#markup' => $currency
->formatAmount($payment_line_item
->getAmount()),
),
'total' => array(
'#attributes' => array(
'class' => array(
'payment-line-item-amount-total',
),
),
'#markup' => $currency
->formatAmount($payment_line_item
->getTotalAmount()),
),
);
}
/** @var \Drupal\currency\Entity\CurrencyInterface $payment_line_items_currency */
$payment_line_items_currency = $this->currencyStorage
->load($payment_line_items
->getCurrencyCode());
$element['table']['payment_total'] = array(
'#attributes' => array(
'class' => array(
'payment-amount',
),
),
'label' => array(
'#attributes' => array(
'class' => array(
'payment-amount-label',
),
'colspan' => 3,
),
'#markup' => $this
->t('Total amount'),
),
'total' => array(
'#attributes' => array(
'class' => array(
'payment-amount-total',
),
),
'#markup' => $payment_line_items_currency
->formatAmount($payment_line_items
->getAmount()),
),
);
return $element;
}