Good way to fill out a table.

PHOTO EMBED

Sat Feb 26 2022 16:02:13 GMT+0000 (UTC)

Saved by @igor #vim #linux

// This is the first function in which we get data from a request.
// After that we return a multidimensional array with that data.

/**
   * {@inheritDoc}
   */
  public function buildPaymentReportTable(Request $request) {
    $order_id = $request->request->get('oid');
    $authorization_code = $request->request->get('AuthCode');
    $payment_status = $request->request->get('Response');
    $transaction_status_code = $request->request->get('ProcReturnCode');
    $transaction_id = $request->request->get('TransId');
    $transaction_date = $request->request->get('EXTRA_TRXDATE');
    $status_code_3d = $request->request->get('mdStatus');

    // Add transaction data to order field.
    $order = $this->entityTypeManager
      ->getStorage('commerce_order')
      ->load($order_id);
    $order_data = [
      'order_id' => $order_id,
      'authorization_code' => $authorization_code,
      'payment_status' => $payment_status,
      'transaction_status_code' => $transaction_status_code,
      'transaction_id' => $transaction_id,
      'transaction_date' => $transaction_date,
      'status_code_3d' => $status_code_3d,
    ];
    $order->field_banca_intesa_data = json_encode($order_data);
    $order->save();

    return [
      ['name' => $this->t('Order ID'), 'value' => $order_id],
      ['name' => $this->t('Authorization code'), 'value' => $authorization_code],
      ['name' => $this->t('Payment status'), 'value' => $payment_status],
      ['name' => $this->t('Transaction status code'), 'value' => $transaction_status_code],
      ['name' => $this->t('Transaction ID'), 'value' => $transaction_id],
      ['name' => $this->t('Transaction date'), 'value' => $transaction_date],
      ['name' => $this->t('Status code for the 3D transaction'), 'value' => $status_code_3d],
    ];
  }



// This is the second function

  /**
   * {@inheritDoc}
   */
  public function getRenderedPaymentReportTable(Request $request) {
    $info_table_data = $this->buildPaymentReportTable($request);

    $info_table = [
      '#type' => 'table',
      '#header' => [$this->t('Parameter name'), $this->t('Parameter value')],
      '#rows' => $info_table_data,
    ];

    return $this->renderer->render($info_table);
  }
content_copyCOPY

This example if from Banca Intesa contrib module.