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?