Hallo zusammen,
für einen Kunden haben wir das folgende Plugin im Einsatz: Angebote powered by Pickware | Backend-Bearbeitung | Administration | Erweiterungen | Shopware Community Store
Das Plugin fügt den Formularen ein Freitextfeld in Form einer Checkbox hinzu, worüber man ein Formular als “Angebotsformular” kennzeichnen kann.
Aufgrund einer Anforderung des Kunden, habe ich ebenfalls eine Checkbox als Freitextfeld auf Formular-Ebene hinzugefügt. Diese Checkbox lässt Redakteure Formulare kennzeichnen, die mit einer Newsletter-Optin Checkbox ausgegeben werden sollen.
Soweit so gut…
Ich habe also geschaut, wo ich mich im Code “reinhängen” muss, damit ich meine Logik für die Newsletter-Anmeldung bei aktiver Checkbox im Request implementieren kann.
Das Angebote-Plugin von Pickware nutzt offenbar bereits Events/Hooks die für mich interessant sein können.
FormSubscriber vom Angebote-Plugin: public static function getSubscribedEvents() { return ['Enlight\_Controller\_Action\_Frontend\_Forms\_Index' =\> 'onFormsIndex', 'Shopware\_Controllers\_Frontend\_Forms::commitForm::replace' =\> 'onReplaceFormsCommitForm',]; }
public function onReplaceFormsCommitForm(\Enlight\_Hook\_HookArgs $args) { if ($formService-\>isOfferRequestForm($formId)) { // ... } else { $args-\>setReturn($args-\>getSubject()-\>executeParent( $args-\>getMethod(), $args-\>getArgs() )); } }
So wie ich das verstehe, ist hier auch schon das Problem: executeParent wird nur ausgeführt, wenn das abgeschickte Formular kein “Angebote-Formular” ist.
Sobald ich ein Formular teste, bei dem die Angebote-Checkbox & meine Custom-Checkbox angehakt ist, wird mein Code nicht ausgeführt.
Nun zur eigentlichen Frage: gibt es irgendeine Möglichkeit, dass mein Code auch in dem Fall der aktiven Checkbox des Plugins ausgeführt wird? Oder muss ich Änderungen im Code des Plugins durchführen, um das zu ermöglichen?
LG