Hallo, an folgender Sache sitze ich gerade fest: ich wollte die Formulardaten aus Shopware_Controllers_Frontend_Forms abgreifen, um diese zusätzlich bearbeiten zu können, bevor die Emails versendet werden. Die Idee war über Plugins und Hooks zu gehen. Ein Plugin mit Hooks habe ich aufgestellt: $hook = $this-\>createHook( 'Shopware\_Controllers\_Frontend\_Forms', 'indexAction', 'meineMethode', Enlight\_Hook\_HookHandler::TypeAfter, 0 );
Ich kann mir auch in meiner statischen Plugin-Methode Variablen aus dem Objekt ausgeben lassen bei TypeAfter. Etwa ganz primitiv erstmal $test = Shopware()-\>Modules()-\>CmsSupport()-\>sPOSTS;
Das Problem ist für mich erstmal, dass sich alles in der Methode indexAction, die ja den Viewport aufruft, abspielt. Davor kann ich nicht ansetzen - da gibt es noch keine Post-Daten (TypeBefore), danach (TypeAfter) ist die Mail versandt und Return- Rückgabewerte gibt es zwischendrin keine. Mit TypeReplace müsste ich die ganze Methode nochmal als statische Methode nachbauen - DRY und Wartbarkeit geht irgendwie anders. Ich hatte auch schon erfolglos versucht an der Methode checkFields anzusetzen, aber da gibt es auch keine Rückgabewerte. Ich würde ja sagen, nach diesem Aufruf von checkFields wäre eine gute Möglichkeit für mein Vorhaben - aber wie bekomme ich meinen Code dort hin? if (!empty($this-\>Request()-\>Submit)){ $this-\>checkFields(); }
Ich würde gerne an der Stelle auf die Eigenschaft $FormElements zugreifen, und die an einer bestimmten Stelle im Ablauf modifizieren und zurückgeben. Frage ist, ob das alles so geht wie gedacht, oder ich völlig daneben liege. Ideen dazu? Anmerkungen? Immer her damit, danke!
Für den Fall, dass jemand vor einem ähnlichen Problem stehen sollte: es war der Holzweg. Um direkt die Formulardaten der statischen Seiten vor der Validierung abzugreifen, macht dieser Hook Sinn: $hook = $this-\>createHook( 'sCmsSupport', 'validate\_input', 'meineFunktion', Enlight\_Hook\_HookHandler::TypeBefore, 0 );