使用自定义表单以编程方式在“产品”页面上发送电子邮件和创建订单

时间:2018-07-31 04:28:09

标签: email magento magento2

当客户在表单字段中输入详细信息并输入提交按钮时,订单电子邮件应立即发送客户的电子邮件,并且订单也应在后端中创建。提交成功后(​​发送电子邮件并创建订单后),成功消息将显示在同一当前产品页面上。

为此,我已经在主题产品的详细页面上添加了“自定义订单”表单。表单包含名称,电子邮件,数量,产品名称和价格(客户访问时的当前产品名称和价格)等字段。

如何在“产品”页面自定义表单上以编程方式发送电子邮件和创建订单?

任何帮助大都受到赞赏。

1 个答案:

答案 0 :(得分:0)

您需要为模板创建一个块类(关于如何为Magento 2创建控制器的资源很多,您可以引用它们)。

您可以使用一种方法来获取用于添加订单的产品网址:

public function getAddProductUrl($product, $additional = [])
{
    return $this->_cartHelper->getAddUrl($product, $additional);
}

然后在您的phtml模板文件中添加以下html形式和javascript或类似的东西:

<script type="text/x-magento-init">
    {
    "[data-role=tocart-form]": {
    "catalogAddToCart": {}
    }
    }
</script>
<div class="product-add-form">
    <?php $product = $block->getProduct(); ?>
    <form data-product-sku="<?= /* @NoEscape */ $product->getSku() ?>"
          action="<?= /* @NoEscape */ $block->getAddProductUrl($product) ?>" method="post" data-role="tocart-form">
        <input type="hidden" name="product" value="<?= /* @escapeNotVerified */ $product->getId() ?>" />
        <?= $block->getBlockHtml('formkey') ?>
        <button type="submit" title="<?php echo /* @escapeNotVerified */ __('Add to Cart'); ?>" class="action primary tocart">
            <span><?php echo /* @escapeNotVerified */ __('Add to Cart'); ?></span>
        </button>
    </form>
</div>