Keine Daten im POST onwohl Formular mit POST sendet

Hi, ich möchte in meinem plugin die möglichkeit haben, POST daten, die von formularen geschickt werden, abzufangen und zu verarbeiten. allerdings klappt dies nicht, wenn ich bei „Bestellung abschließen“ bin (/sViewport,checkout/success,payment) und dort die zahlungsart ändere. wenn ich in meinem plugin mit dem event „‚Enlight_Controller_Action_PostDispatch‘, ‚onPostDispatch‘“ den kompletten POST ausgebe (var_dump($_POST)), so bekomme ich nur ein leeres array. das formular sendet wie folgt:

ich möchte an die paymentid rankommen, die hier drin steckt:

warum bekomme ich die daten nicht zu sehen, die sind doch global?

danke im voraus

hat sich erledigt. ich arbeite mit einer modifizierten version von getSelectedPayment des controllers Checkout.php

ich muss meine lösung revidieren. mein plugin wird (und muss) vor allen anderen actions aufgerufen (onPreDispatch), sodass ich die methode „getSelectedPayment“ nicht mehr verwenden kann (da sie erst nach meinem plugin aufgerufen wird). und da die formulardaten an eine bestimmte action (savePayment) eines bestimmten controllers (account) gesendet werden, kann ich sie nicht abfangen, zumindest nicht mit $_POST. da die daten ja irgendwo sein müssen, habe ich mir mal die globale variable $GLOBALS ausgeben lassen und die gesuchte paymentid in den tiefen der Enlight Events gefunden: hier der pfad: $GLOBALS[‚s‘][’_events’][‚listeners‘][‚Enlight_Controller_Action_PostDispatch‘][50][‚listener‘][0][‚config‘][’_shop’][‚currency‘][‚payment‘][’_data’][‚id‘] das problem ist, dass einige der sub-arrays „protected“ sind, sodass ich nicht direkt auf meine gesuchte variable zugreifen kann. daher habe ich einwenig mit den vorhandenen mitteln experimentiert und einen anfang gefunden, um die daten zu erreichen: Enlight()->Events()->getListeners(‚Enlight_Controller_Action_PostDispatch‘) allerdings komme ich damit nur bis zu den 50 arrays, die sich unterhalb [‚Enlight_Controller_Action_PostDispatch‘] befinden und finde einfach keinen weg, tiefer zu gehen. vllt. mache ich es mir zu kompliziert, ich weiß es nicht. aber ich weiß, dass ich euch extrem dankbar wär, wenn ihr mir helfen könntet, an die paymentid zu kommen. hier die struktur des [‚Enlight_Controller_Action_PostDispatch‘]-arrays: [50]=\> object(Enlight\_Event\_EventHandler)#147 (4) { ["name:protected"]=\> string(38) "Enlight\_Controller\_Action\_PostDispatch" ["listener:protected"]=\> array(2) { [0]=\> object(Shopware\_Plugins\_Frontend\_ViewportDispatcher\_Bootstrap)#236 (8) { ["request:protected"]=\> NULL ["action:protected"]=\> NULL ["view:protected"]=\> NULL ["config:protected"]=\> object(Shopware\_Models\_Config)#245 (25) { ["\_name:protected"]=\> string(13) "s\_core\_config" ["\_allowModifications:protected"]=\> bool(true) ["\_shop:protected"]=\> object(Shopware\_Proxies\_ShopwareModelsShopProxy)#239 (12) { ["id:protected"]=\> int(1) ... ["locale:protected"]=\> object(Shopware\_Models\_Locale)#240 (2) { ["id:protected"]=\> int(1) ["\_locale:protected"]=\> string(5) "de\_DE" } ["currency:protected"]=\> object(Shopware\_Models\_Currency)#241 (2) { ["id:protected"]=\> int(1) ... ["payment"]=\> object(Enlight\_Config)#134 (9) { ["\_defaultConfigClass:protected"]=\> string(14) "Enlight\_Config" ["\_allowModifications:protected"]=\> bool(false) ["\_index:protected"]=\> int(0) ["\_count:protected"]=\> int(20) ["\_data:protected"]=\> array(20) { ["name"]=\> string(7) "Payment" ["id"]=\> string(2) "38"

wenn du hier einsteigst per Hook sollte es dich mit $_POST gehen. An die Seite wird ja der Formular gesendet. $event = $this-\>createHook( 'Shopware\_Controllers\_Frontend\_Account', 'savePayment', 'mysavePayment', Enlight\_Hook\_HookHandler::TypeAfter, 0 ); $this-\>subscribeHook($event);

1 „Gefällt mir“

danke, ich habe das nun zwar anders gelöst, aber wusste nicht, dass man sich so einfach einhooken kann. meine lösung basiert auf der erkenntnis, dass savePayment die ausgewählte zahlungsart in der tabelle s_users speichert. von dort habe ich mir die paymentid geholt. das system ist echt gut durchdacht.