# forward oder redirect in Hook-Methode

**URL:** <https://forum.shopware.com/t/forward-oder-redirect-in-hook-methode/9830>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [14. November 2012 um 14:17 UTC](https://forum.shopware.com/t/forward-oder-redirect-in-hook-methode/9830 "2012-11-14T14:17:59Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![derKra](https://avatars.discourse-cdn.com/v4/letter/d/8491ac/32.png) [@derKra](https://forum.shopware.com/u/derKra)\
**Post date:** [14. November 2012 um 14:17 UTC](https://forum.shopware.com/t/forward-oder-redirect-in-hook-methode/9830/1 "2012-11-14T14:17:59Z")

</div>

Hallo zusammen, ich versuche in einem Plugin die Forward-Methode der gehookten Klasse zu verwenden. Dies funktioniert aber nicht wie erwartet. Im konkreten Fall möchte ich den Abschluß einer Bestellung verhindern und stattdessen auf die vorgelagerte Action (confirm) weiterleiten. Keines der unten aufgeführten Beispiele funktioniert. Die Bestellung wird trotzdem abgeschlossen. Die Weiterleitung scheint erst danach ausgeführt zu werden. Ich kann das Problem natürlich mit PHP-Bordmitteln umgehen (ein Redirect wäre auch eine Lösung), trotzdem stellen sich folgende Fragen: Mache ich was falsch? Ist das ein Bug? Gibt es eine funktionierende Lösung? ` class Shopware\_Plugins\_Frontend\_MyPlugin\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { public function install() { // Checkout $this-\>subscribeEvent( 'Shopware\_Controllers\_Frontend\_Checkout::finishAction::before', 'beforeFinishAction' ); return true; } public function beforeFinishAction(Enlight\_Event\_EventArgs $args) { // geht nicht: $args-\>getSubject()-\>forward('confirm'); // geht nicht: return($args-\>getSubject()-\>forward('confirm')); // geht auch nicht: $args-\>setReturn($args-\>getSubject()-\>forward('confirm')); } // ... } ` Gruß, Boris

---

<div class="post-metadata">

**Author:** ![pwoerdehoff](https://avatars.discourse-cdn.com/v4/letter/p/8dc957/32.png) [@pwoerdehoff](https://forum.shopware.com/u/pwoerdehoff)\
**Post date:** [14. November 2012 um 15:00 UTC](https://forum.shopware.com/t/forward-oder-redirect-in-hook-methode/9830/2 "2012-11-14T15:00:35Z")

</div>

Hey Boris, dein Code müsste eigentlich funktionieren. Bist du dir sicher, dass deine beforeFinishAction überhaupt aufgerufen wird?

---

<div class="post-metadata">

**Author:** ![derKra](https://avatars.discourse-cdn.com/v4/letter/d/8491ac/32.png) [@derKra](https://forum.shopware.com/u/derKra)\
**Post date:** [14. November 2012 um 15:03 UTC](https://forum.shopware.com/t/forward-oder-redirect-in-hook-methode/9830/3 "2012-11-14T15:03:13Z")

</div>

Ja, absolut, das habe ich geprüft.

---

<div class="post-metadata">

**Author:** ![pwoerdehoff](https://avatars.discourse-cdn.com/v4/letter/p/8dc957/32.png) [@pwoerdehoff](https://forum.shopware.com/u/pwoerdehoff)\
**Post date:** [15. November 2012 um 09:50 UTC](https://forum.shopware.com/t/forward-oder-redirect-in-hook-methode/9830/4 "2012-11-15T09:50:53Z")

</div>

Hmm, probier doch mal ob das hier bei dir funktioniert: ` public function install() { $this-\>subscribeEvent( 'Shopware\_Controllers\_Frontend\_Checkout::confirmAction::before', 'beforeFinishAction' ); return true; } public function beforeFinishAction(Enlight\_Event\_EventArgs $args) { $args-\>getSubject()-\>forward('cart'); } `

---

<div class="post-metadata">

**Author:** ![derKra](https://avatars.discourse-cdn.com/v4/letter/d/8491ac/32.png) [@derKra](https://forum.shopware.com/u/derKra)\
**Post date:** [15. November 2012 um 10:40 UTC](https://forum.shopware.com/t/forward-oder-redirect-in-hook-methode/9830/5 "2012-11-15T10:40:16Z")

</div>

Hallo Philipp, da macht keinen Unterschied, das hier funktioniert ist aber ein unschöner Workaround: EDIT: funktioniert doch nicht, bzw. wird der redirect auch hier erst nach der finish action ausgeführt. ` class Shopware\_Plugins\_Frontend\_MyPlugin\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { public function install() { // Checkout $this-\>subscribeEvent( 'Shopware\_Controllers\_Frontend\_Checkout::finishAction::before', 'beforeFinishAction' ); return true; } public function beforeFinishAction(Enlight\_Event\_EventArgs $args) { // geht $args-\>getSubject()-\>redirect('checkout'); } // ... } ` Gruß Boris

---

<div class="post-metadata">

**Author:** ![pwoerdehoff](https://avatars.discourse-cdn.com/v4/letter/p/8dc957/32.png) [@pwoerdehoff](https://forum.shopware.com/u/pwoerdehoff)\
**Post date:** [15. November 2012 um 11:05 UTC](https://forum.shopware.com/t/forward-oder-redirect-in-hook-methode/9830/6 "2012-11-15T11:05:19Z")

</div>

Hey Boris, wieso macht das keinen Unterschied? , es kann doch gut sein das einen die confirmAction zur finishAction weiterleitet, sofern der User bestimmte Bedingungen(Cookies, Referrer etc.) erfüllt. Ein Shopware Forward wird darüber hinaus serverseitig realisiert, wodurch auch die URL gleichbleibt.

---

<div class="post-metadata">

**Author:** ![derKra](https://avatars.discourse-cdn.com/v4/letter/d/8491ac/32.png) [@derKra](https://forum.shopware.com/u/derKra)\
**Post date:** [15. November 2012 um 11:43 UTC](https://forum.shopware.com/t/forward-oder-redirect-in-hook-methode/9830/7 "2012-11-15T11:43:58Z")

</div>

Hallo Phillipp, [quote=“pwoerdehoff”] wieso macht das keinen Unterschied?[/quote] Soll heißen: funktioniert auch nicht. [quote=“pwoerdehoff”] es kann doch gut sein das einen die confirmAction zur finishAction weiterleitet, sofern der User bestimmte Bedingungen(Cookies, Referrer etc.) erfüllt.[/quote] Theoretisch ja, praktisch nein. Im dem mir vorliegendem Quelltext ist das nicht der Fall (class Shopware\_Controllers\_Frontend\_Checkout). Ich vermute mal, da hast Du noch nicht reingeschaut. [quote=“pwoerdehoff”] Ein Shopware Forward wird darüber hinaus serverseitig realisiert, wodurch auch die URL gleichbleibt. [/quote] Ja, deshalb wäre ein forward auch eleganter. Gruß, Boris

---

<div class="post-metadata">

**Author:** ![pwoerdehoff](https://avatars.discourse-cdn.com/v4/letter/p/8dc957/32.png) [@pwoerdehoff](https://forum.shopware.com/u/pwoerdehoff)\
**Post date:** [15. November 2012 um 13:06 UTC](https://forum.shopware.com/t/forward-oder-redirect-in-hook-methode/9830/8 "2012-11-15T13:06:18Z")

</div>

Hmm okay, wirklich sehr komisch, da ich das von mir aufgeführte Beispiel selber ohne Probleme in einem meiner Plugins verwende… ☹
