Magento 2 通讯模块

问题描述

我的问题是我们有一个自定义的时事通讯订阅表单,我们需要两个值:姓名和电子邮件。如果订阅成功,我希望收到一条确认消息,并希望向新用户发送一封电子邮件

这是正在使用的模板的 phtml 文件内容

<div class="block newsletter">
<div class="test">
    <form class="form subscribe" novalidate
        action="<?PHP echo $block->escapeUrl($block->getFormActionUrl()) ?>"
        method="post"
        data-mage-init='{"validation": {"errorClass": "mage-error"}}'
        id="newsletter-validate-detail">
        <?PHP if ($block->getFieldConfig()): ?>
            <div class="row align-items-center">
                <div class="field firstname col-lg-12 col-md-12 col-sm-12 col-xs-12">
                    <div class="control">
                        <input name="firstname" type="text" id="firstname" placeholder="<?PHP echo $block->escapeHtml(__('Firstname')) ?>" data-validate="{required:true}"/>
                    </div>
                </div>
            </div>
            <div class="row align-items-center">
                <div class="field lastname col-lg-12 col-md-12 col-sm-12 col-xs-12">
                    <div class="control">
                        <input name="lastname" type="text" id="lastname" placeholder="<?PHP echo $block->escapeHtml(__('Lastname')) ?>" data-validate="{required:true}"/>
                    </div>
                </div>
            </div>
            <div class="row align-items-center">
                <div class="field newsletter col-lg-12 col-md-12 col-sm-12 col-xs-12">
                    <div class="control">
                        <input name="email" type="email" id="newsletter" placeholder="<?PHP echo $block->escapeHtml(__('Email Address')) ?>" data-validate="{required:true,'validate-email':true}"/>
                    </div>
                </div>
            </div>
        <?PHP else: ?>
            <div class="row align-items-center">
                <div class="field fullname col-lg-12 col-md-12 col-sm-12 col-xs-12">
                    <div class="control">
                        <input name="fullname" type="text" id="fullname" placeholder="<?PHP echo $block->escapeHtml(__('Full Name')) ?>" data-validate="{required:true}"/>
                    </div>
                </div>
            </div>
            <div class="row align-items-center">
                <div class="field newsletter col-lg-12 col-md-12 col-sm-12 col-xs-12">
                    <div class="control">
                        <input name="email" type="email" id="newsletter" placeholder="<?PHP echo $block->escapeHtml(__('Email Address')) ?>" data-validate="{required:true,'validate-email':true}"/>
                    </div>
                </div>
            </div>
        <?PHP endif; ?>
            <div class="row align-items-center">
                <div class="field privacy required col-lg-11 col-md-3 col-sm-3 col-xs-3">
                    <div class="control">
                        <input class="subscriber-checkBox col-lg-1 col-md-3 col-sm-3 col-xs-3" type="checkBox" id="privacy" name="privacy" data-validate="{required:true}" class="input-checkBox checkBox required" value="1">
                            <label for="privacy" class="label col-lg-10 col-md-3 col-sm-3 col-xs-3">
                                <a href="<?PHP echo $block->getPrivacyPolicyUrl() ?>">
                                    <?PHP echo $block->getPrivacyPolicy() ?>
                                </a>
                            </label> 
                    </div>
                </div>
            </div> 
            <div class="row align-items-center">
                <div class="actions col-lg-3 col-md-3 col-sm-3 col-xs-3">
                    <button class="subscribe-button action subscribe btn btn-primary" title="<?PHP echo $block->escapeHtml(__('Subscribe')) ?>" type="submit">
                        <span><?PHP echo $block->escapeHtml(__('Subscribe')) ?></span>
                    </button>
                </div>
            </div>
    </form>
</div>

这是jquery:

<script>
require(['jquery'],function($){
    var form = $('#newsletter-validate-detail');
    form.submit(function(e) {
        if(form.validation('isValid')){
            var email = $("#newsletter-validate-detail #newsletter").val();
            var url = form.attr('action');
            var loadingMessage = $('.loading-message');

            e.preventDefault();
            try{
                loadingMessage.html('Submitting...').show();
                $('.scg-msg > messages').html();

                $.ajax({
                    url: url,dataType: 'json',type: 'POST',data: {email: email},success: function (data){
                        if(data.status != "ERROR"){
                            $("#newsletter-validate-detail #newsletter").val('');
                            $('#newsletter-validate-detail .scg-msg > .messages').html('<div class="message-success success message" ><div >' +
                                data.msg + '</div></div>');
                        }else{
                            $('#newsletter-validate-detail .scg-msg > .messages').html('<div class="message-error error message" >' +
                                '<div>'+data.msg +'</div></div>');
                        }
                        loadingMessage.hide();
                    },});
            } catch (e){
                loadingMessage.html(e.message).hide();
            }
        }
    });
})

我应该如何以及在哪里放置这个 jquery 代码以使其工作?重要提示:我不希望我的页面在提交表单时刷新。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...