Hallo zusammen. In Eurem Plugin Migration Guide (http://wiki.shopware.de/Plugin-Migratio … 21a17.html) ist die Rede von einer „neuen Variante“ wie Hooks im System zu registrieren sind. Gilt dieses auch schon für Beta 2? Sämtliche Umsetzungen von Hooks (bspw. Zahlungsmodul von Klarna) nutzen die alte Variante, welche im Gegensatz zur neuen auch tadellos funktioniert. function blaBlub() { $this-\>subscribeHook( 'Shopware\_Controllers\_Frontend\_Account::savePaymentAction::before', 'myPaymentAction' ); // ... } public function myPaymentAction(Enlight\_Hook\_HookArgs $args) { // ... }
Sollte das obenstehende schon in der Beta2 vom 17.7. funktionieren?
[quote=“fdehn”] function blaBlub() { $this-\>subscribeHook( 'Shopware\_Controllers\_Frontend\_Account::savePaymentAction::before', 'myPaymentAction' ); // ... } public function myPaymentAction(Enlight\_Hook\_HookArgs $args) { // ... }
[/quote] Passend hierzu eine Frage zum “Hooken” des Controllers Shopware_Controllers_Frontend_Account und der Methode savePaymentAction: Anhand des Controllernamens setzt Enlight offensichtlich aufgrund der Konventionen automatisch ein/e View bzw. Template mit folgendem Pfad: frontend/account/save_payment.tpl. Im von mir (auf alte Weise) überschriebenen Controller bzw. Methode wirft Enlight einen Fehler aufgrund eines nicht vorhandenen Templates (ist auch nicht vorhanden). Die originäre Methode (bzw. der Controller) bindet das selbe (nicht vorhandene Template) ein, hier wird aber kein Fehler geworfen. Hat jemand einen Tip, wie ich dieses Verhalten umgehe, ohne ein entsprechendes Template zur Verfügung zu stellen? Die von mir überschriebene Methode soll nichts darstellen, nur übergebene Parameter speichern.
Hi, was machst du denn da genau in diesem Hook? In der originalen Action macht er ja eine Umleitung auf den Account, wodurch der kein Template mehr benötigt. $this-\>redirect(array('controller'=\>$target, 'action'=\>'index', 'success'=\>'payment'));
Heiner
Ich möchte bspw. eigens angelegte Felder bei einer Zahlart validieren und anschließend in eigenen Tabellen speichern… Ist es möglich, den originären Controller (also das Standardverhalten des Controllers) zu initialisieren (aufzurufen)?
Mein Hook wird wunderbar ausgeführt, ich kann aus diesem auch jedwede Aktion triggern die ich haben mag… letztlich will ich aber nur erreichen, dass vor dem Abspeichern der Zahlart eine Validierung von Parametern erfolgt. Sind diese erfolgreich validiert, so soll im Code einfach fortgefahren werden. Wenn die Validierung fehlschlägt, so wird meine Logik entsprechend darauf reagieren. Mir scheint, dass der per Hook erweiterte Controller (bzw er und seine Methode Shopware_Controllers_Frontend_Account::savePaymentAction) trotz Enlight_Hook_HookHandler::TypeBefore nicht mehr ausgeführt wird. In Shopware 3.5.4 und neuer funktioniert(e) mein Ansatz bisher tadellos!