在AJAX新闻稿订阅请求表单(Shopware 6)中设置结果消息

在AJAX新闻稿订阅请求表单(Shopware 6)中设置结果消息,ajax,shopware,Ajax,Shopware,我写了一个Shopware 6插件,它在我的页脚区域提供了一个时事通讯订阅表单。新闻稿订阅在通过Soap API连接的第三方系统中进行管理。这个API运行良好。只是我不知道如何在我的Shopware插件中提供错误/成功消息,以及如何将其显示给用户。表单通过Ajax提交,并始终显示成功消息。如果电子邮件地址已订阅,我想显示一个错误 下面是表单细枝模板,它已经进行了基本语法验证: <form action="{{ path('frontend.form.newsletter.regi

我写了一个Shopware 6插件,它在我的页脚区域提供了一个时事通讯订阅表单。新闻稿订阅在通过Soap API连接的第三方系统中进行管理。这个API运行良好。只是我不知道如何在我的Shopware插件中提供错误/成功消息,以及如何将其显示给用户。表单通过Ajax提交,并始终显示成功消息。如果电子邮件地址已订阅,我想显示一个错误

下面是表单细枝模板,它已经进行了基本语法验证:

<form action="{{ path('frontend.form.newsletter.register.handle') }}"
      method="post"
      id="newsletter-subscribe-form"
      data-form-csrf-handler="true"
      data-form-validation="true"
      data-form-ajax-submit="true">
    {{ sw_csrf('frontend.form.newsletter.register.handle') }}
    {% set formViolations = app.request.get('errors') %}
    <input type="hidden" name="option" value="subscribe"/>
    <input type="submit" class="submit--hidden d-none">
    <div class="form-content">
        <div class="form-row">
            <div class="form-group input-group col-md-8">
                <input name="email"
                       type="email"
                       id="footerNewsletterMail"
                       placeholder="{{ "account.personalMailPlaceholder"|trans }}{{ "general.required"|trans }}"
                       required="required"
                       value="{{ data.get('email') }}"
                       class="form-control{% if formViolations.getViolations('/email') %} is-invalid{% endif %}"/>
            </div>
            <div class="form-group input-group col-md-4">
                <button type="submit" class="btn btn-block btn-primary">
                    Subscribe now!
                </button>
            </div>
        </div>
    </div>
</form>
现在,
src/subscriber/DoRegisterNewsletter.php
中我的事件订阅者所做的事情是这样的,这就是我想要返回一些错误消息的地方,例如,当给定的电子邮件地址已经在外部新闻稿系统中订阅时:

公共静态函数getSubscribedEvents()
{
返回[
时事通讯RegisterEvent::class=>“onRegisterMyNewsletter”,
];
}
公共函数onRegisterMyNewsletter(时事通讯RegisterEvent$事件)
{
//简化代码:
/**@var bool$已注册*/
$isRegistered=$this->checkIfEmailIsRegistered($event->getNewsletteRecipient()->getEmail());
如果($isRegistered){
//现在,如何为当前Ajax请求设置响应?
}
否则{
$this->goAndSubscribeMe($event->getnewsletteRecipient()->getEmail());
}
}

好的,在
FormController->handleSubscribe()
中调用该事件订阅服务器,但其结果不用于任何用途。因此,订阅该活动可以做更多的工作,比如“你好,我刚刚接到电话,只是为了你的信息”


除了订阅活动,还可以装饰服务,如和中所述。这提供了更多的控制,比如修改方法的结果。

好的,在
FormController->handleSubscribe()
中调用该事件订阅服务器,但其结果不用于任何用途。因此,订阅该活动可以做更多的工作,比如“你好,我刚刚接到电话,只是为了你的信息”

除了订阅活动,还可以装饰服务,如和中所述。这提供了更多的控制,比如修改方法的结果