首页 > 解决方案 > Magento 2 - 如何将 phtml 文件中的输入值传递给阻止类?

问题描述

我正在尝试用我的自定义代码覆盖 Magento 模块块,包括 phtml 文件和 Block 中的 php 类。在我的 phtml 文件中,我添加了一个输入字段,我想将输入的值传递给 Block 类,这样我就可以使用该值来更新数据库。

到目前为止,我已经创建了一个按钮和一个onClick由该按钮调用的 php 函数,但我不知道如何将输入值传递给该函数。我曾尝试使用document.getElementById,但它不起作用。

php函数是:

public function updatePayment($paidAmount)
{
    $currentPaid = $this->getSource()->getTotalPaid();
    $this->getOrder()->setTotalPaid($paidAmount + $currentPaid)->save();
}

phtml 文件输入 HTML:

<input id="update-payment-input" type="text" style="text-align:right;" value="<?= $block->setDefaultAmountForPayment() ?>">
<script>
    require(['prototype'], function() {
        document.getElementById("update-payment-submit").addEventListener("click", updateAmount);
        function updateAmount() {
            <?= $block->updatePayment() ?>
            // Here I tried to use document.getElementById to get the input value
        }
    });
</script>

我希望该值被捕获并传递给Block类中的函数,但它显示一个错误,指出文档未定义。

标签: phpjquerymagento2

解决方案


将此代码添加到您的 HTML 文件中。

<input id="update-payment-input" type="text" style="text-align:right;" value="<?= $block->setDefaultAmountForPayment() ?>" onclick="updateAmount(this.value)">
<script>
    function updateAmount(value) {
        <?= $block->updatePayment(value) ?>
    }
</script>

推荐阅读