# Per AJAX auf Newsletter-Controller zugreifen

**URL:** https://forum.shopware.com/t/per-ajax-auf-newsletter-controller-zugreifen/71033
**Category:** Programmierung
**Created:** [19. November 2020 um 15:21 UTC](https://forum.shopware.com/t/per-ajax-auf-newsletter-controller-zugreifen/71033 "2020-11-19T15:21:43Z")
**Posts on this page:** 1
**Showing post:** 5

<div class="post-metadata">

### Author: ![Rahmspinat](https://avatars.discourse-cdn.com/v4/letter/r/3da27b/32.png) [@Rahmspinat](https://forum.shopware.com/u/Rahmspinat)
#### Post date: [20. November 2020 um 13:01 UTC](https://forum.shopware.com/t/per-ajax-auf-newsletter-controller-zugreifen/71033/5 "2020-11-20T13:01:07Z")

</div>

Ich habe mich jetzt gegen einen eigenen Controller entschieden und werde mit einem Event vom Newsletter-Controller arbeiten.

Wenn der Controller mit seiner Arbeit durch ist, sag ich ihm dass er die View nicht rendern und stattdessen JSON ausgeben soll.&nbsp;

if($this-\>isAjaxRequest($request)) {

$controller-\>Front()-\>Plugins()-\>ViewRenderer()-\>setNoRender();

&nbsp;

Über die $args des Events kann ich mir 1. ausgeben lassen ob die Anmeldung des Users erfolgreich war und 2. ob es sich um einen „ajaxRequest“ handelt. So kann ich das View-Rendern nur dann deaktivieren wenn es wirklich einen ajax-Aufruf gab. In das Form habe ich mir dafür ein hidden input-Field gepackt mit dem namen „ajax-newsletter“.

&nbsp;

Mein Problem war bis eben noch, dass ich kein Captcha habe. Dafür habe ich mir diesen Block aus der newsletter.tpl kopiert:

```
{* Captcha *}
                            {block name="frontend_newsletter_form_captcha"}
                                {if !({config name=noCaptchaAfterLogin} && $sUserLoggedIn)}
                                    {$newsletterCaptchaName = {config name=newsletterCaptcha}}
                                    
                                        {if $newsletterCaptchaName === 'legacy'}
                                            

                                                {* Deferred loading of the captcha image *}
                                                {block name='frontend_newsletter_form_captcha_placeholder'}
                                                    
                                                    
                                                {/block}

                                                {block name='frontend_newsletter_form_captcha_label'}
                                                    {s name="SupportLabelCaptcha" namespace="frontend/forms/elements"}{/s}
                                                {/block}

                                                {block name='frontend_newsletter_form_captcha_code'}
                                                    
                                                        
                                                    
                                                {/block}
                                            
                                        {else}
                                            {$captchaName = $newsletterCaptchaName}
                                            {$captchaHasError = isset($sErrorFlag) && count($sErrorFlag) > 0}
                                            {include file="widgets/captcha/custom_captcha.tpl" captchaName=$captchaName captchaHasError=$captchaHasError}
                                        {/if}
                                    
                                {/if}
                            {/block}

```

&nbsp;

Wenn ich jetzt mit einem Form-Data-Faker arbeite und ihn automatisch die Daten ausfüllen lasse, dann trifft er auf den konfigurierten Honeypot und wird aussortiert.

&nbsp;

Wenn ich mir das so korrekt denke, dann sollten doch alle anderen Plugins etc. kein Problem mit meinem Newsletter-Plugin haben oder? Ich habe mir extra das ‚Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Newsletter‘ Event geschnappt und verändere nur die view.

&nbsp;

Was sagt ihr dazu?

---

_[View the full topic](https://forum.shopware.com/t/per-ajax-auf-newsletter-controller-zugreifen/71033)._
