Magento 2: Как передать значение конфигурации способа оплаты в html-шаблон
Я развернул модуль платежного шлюза на основе образца с github https://github.com/magento/magento2-samples/tree/master/sample-module-payment-gateway.
На данный момент я пытаюсь показать дополнительную информацию, которая была установлена в конфигурации администратора на /view/frontend/web/template/payment/form.html
. Однако существует всего несколько методов, с помощью которых я могу попытаться получить данные: getCode()
, getTitle()
, и т.д. То, что я пытаюсь получить, - это другое поле (скажем, FieldA, которое определяется как field_a на файл конфигурации xml администратора в папке etc.
Я проверил переменную window.checkoutConfig
, но, похоже, она не отображала много информации, заданной в конфигурации оплаты администратором.
Я пропустил шаг, прежде чем смогу передать данные конфигурации в файл блока?
Спасибо,
1 answers
Прежде всего, трудно проверить json, если мы не используем инструмент форматирования.
Мы можем использовать этот веб-сайт для отображения json: http://www.jsoneditoronline.org/
Второй:
Я собираюсь добавить и получить новое поле - фиксированную сумму комиссии к нашему платежу.
--Получить фиксированную сумму в поставщике конфигурации.
Sample-module-payment-gateway/Model/Ui/ConfigProvider.php
final class ConfigProvider implements ConfigProviderInterface
{
const CODE = 'sample_gateway';
protected $method;
/**
* Payment ConfigProvider constructor.
* @param \Magento\Payment\Helper\Data $paymentHelper
*/
public function __construct(
\Magento\Payment\Helper\Data $paymentHelper
) {
$this->method = $paymentHelper->getMethodInstance(self::CODE);
}
/**
* Retrieve assoc array of checkout configuration
*
* @return array
*/
public function getConfig()
{
return [
'payment' => [
self::CODE => [
'transactionResults' => [
ClientMock::SUCCESS => __('Success'),
ClientMock::FAILURE => __('Fraud')
],
'fixedamount' => $this->getFixedAmount(),
]
]
];
}
//Get fixed amount
protected function getFixedAmount()
{
return $this->method->getFixedAmount();
}
}
-- Исправляться сумма от платежа js
Sample-module-payment-gateway/view/frontend/web/js/view/payment/method-renderer/sample_gateway.js
getFixedAmount: function() {
return window.checkoutConfig.payment.sample_gateway.fixedamount;
},
--Добавить в шаблон оплаты
Sample-module-payment-gateway/view/frontend/web/template/payment/form.html
<div class="payment-method" data-bind="css: {'_active': (getCode() == isChecked())}">
......
<div class="fixed-amount">
<span data-bind="text: getFixedAmount()"></span>
</div>
......
</div>
--Добавьте в нашу конфигурацию администратора:
Sample-module-payment-gateway/etc/adminhtml/system.xml
<field id="fixedamount" translate="label" type="text" sortOrder="53" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Fixed Amount</label>
<frontend_class>validate-number validate-zero-or-greater</frontend_class>
</field>
-- И последнее, но не менее важное: не забудьте снова запустить развертывание статического содержимого.