Per AJAX auf Newsletter-Controller zugreifen

Jetzt habe ich leider ein anderes Problem.

Wenn ich den Newsletter-Endpoint anspreche, dann hat dieser angeblich keine Werte erhalten. Im Request-Objekt sind alle Daten enthalten die ich geschickt habe. In der Newsletter.php werden die Daten aber wie folgt z.B. ausgelesen:

        if (!isset(Shopware()->System()->_POST['newsletter'])) {
            return;
        }

        if (Shopware()->System()->_POST['subscribeToNewsletter'] != 1) {
            // Unsubscribe user
            $this->View()->assign('sStatus', Shopware()->Modules()->Admin()->sNewsletterSubscription(Shopware()->System()->_POST['newsletter'], true));

            $session = $this->container->get('session');
            if ($session->offsetExists('sNewsletter')) {
                $session->offsetSet('sNewsletter', false);
            }

            return;
        }

Leider ist die Variable: Shopware()->System()->_POST leer. Bei einem normalen Aufruf der Seite und das anmelden über die Standard /newsletter - Seite, sind diese Variablen befüllt.

Warum sind diesen Variablen leer?

 

Ich habe dafür einen „fix“ in mein Plugin aufgenommen wo ich mit einem PreDispatch_Frontend_Newsletter folgende Variablen setze:

$existingPostVars = Shopware()->System()->_POST->toArray();

            $params = [
                'subscribeToNewsletter' => $request->getParam('subscribeToNewsletter'),
                'newsletter' => $request->getParam('newsletter'),
                'ajax-request' => $request->getParam('ajax-request'),
                'first_name_confirmation' => $request->getParam('first_name_confirmation'),
                'captchaName' => $request->getParam('captchaName'),
                '__csrf_token' => $request->getParam('__csrf_token'),
                'module' => $request->getParam('module'),
                'controller' => $request->getParam('controller'),
                'action' => $request->getParam('action'),
            ];

            $params = array_merge($params, $existingPostVars);

            Shopware()->System()->__set('_POST', $params);

Das fühlt sich wie ein hack und etwas dirty an… Auf jeden Fall habe ich jetzt eine „Newsletter-Api“

 

Was sagt ihr zu dem Fix und wisst ihr warum keine Daten aus ‚Shopware()->System()->_POST->toArray()‘ kommen, wenn ich diese per Rest-Client aufrufe?