Per AJAX auf Newsletter-Controller zugreifen

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. 

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

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

 

Ü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“.

 

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}

 

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.

 

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.

 

Was sagt ihr dazu?