# Wie wenn nötig per Plugin den Bestell-Finish Prozess abbrechen?

**URL:** https://forum.shopware.com/t/wie-wenn-notig-per-plugin-den-bestell-finish-prozess-abbrechen/56754
**Category:** Programmierung
**Created:** [28. November 2018 um 15:48 UTC](https://forum.shopware.com/t/wie-wenn-notig-per-plugin-den-bestell-finish-prozess-abbrechen/56754 "2018-11-28T15:48:29Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![yodorada](https://avatars.discourse-cdn.com/v4/letter/y/90ced4/32.png) [@yodorada](https://forum.shopware.com/u/yodorada)
#### Post date: [28. November 2018 um 15:48 UTC](https://forum.shopware.com/t/wie-wenn-notig-per-plugin-den-bestell-finish-prozess-abbrechen/56754/1 "2018-11-28T15:48:29Z")

</div>

Hallo Forum,

ich habe nun fast den ganzen Tag damit verbracht herauszufinden, wie ich eine Bestellung nach User-Interaktion “Zahlungspflichtig bestellen” notfalls noch abbrechen kann.  
Hintergrund sind ein paar Custom-Attribute, die erfüllt sein müssen.

Lösungsansatz  
a) Subscribe auf HOOK: Shopware\_Controllers\_Frontend\_Checkout::finishAction::replace  
&nbsp; &nbsp;&nbsp;=\> dann meine Prüfroutinen, ob Bestellung gültig ist, falls nicht dann  
&nbsp; &nbsp; =\>&nbsp;per&nbsp;\Enlight\_Hook\_HookArgs $args-\>getSubject()-\>forward(‘confirm’) auf die Confirm-Page umleiten.

Geht leider nicht: Erzeugt eine Fehlermeldung a la&nbsp;Methode “::forward” nicht vorhanden…

b) Subscribe auf EVENT&nbsp;Enlight\_Controller\_Action\_PreDispatch\_Frontend\_Checkout  
&nbsp; &nbsp; =\> dann meine Prüfroutinen, ob Bestellung gültig ist, falls nicht dann  
&nbsp; &nbsp; =\>&nbsp;per&nbsp;\Enlight\_Controller\_ActionEventArgs $args-\>getSubject()-\>forward(‘confirm’) auf die Confirm-Page umleiten.

Geht leider auch nicht. Fehlermeldung identisch…

Wie habe ich denn Zugriff auf die Controller Action forward?  
Den Controller (zB Checkout) bekomme ich doch per&nbsp;$args-\>getSubject() oder?

Wäre Klasse wenn mir da jemand helfen kann.  
Danke!

---

<div class="post-metadata">

### Author: ![ahmadsaad](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@ahmadsaad](https://forum.shopware.com/u/ahmadsaad)
#### Post date: [28. November 2018 um 16:54 UTC](https://forum.shopware.com/t/wie-wenn-notig-per-plugin-den-bestell-finish-prozess-abbrechen/56754/2 "2018-11-28T16:54:32Z")

</div>

Hallo @yodolphe‍,

ja, dass Logic ist richtig ,&nbsp;$args-\>getSubject()&nbsp; =\> Checkout Controller und forword darf funktioniert, wenn nicht also gibt andere Probleme mit Ihre Code.

&nbsp;

VG,

Tel.: +49 755&nbsp;- 183 990 00 | Web:&nbsp;[http://enbit.de/](http://enbit.de/)

---

<div class="post-metadata">

### Author: ![yodorada](https://avatars.discourse-cdn.com/v4/letter/y/90ced4/32.png) [@yodorada](https://forum.shopware.com/u/yodorada)
#### Post date: [30. November 2018 um 08:46 UTC](https://forum.shopware.com/t/wie-wenn-notig-per-plugin-den-bestell-finish-prozess-abbrechen/56754/3 "2018-11-30T08:46:40Z")

</div>

> &nbsp;
> 
> ja, dass Logic ist richtig ,&nbsp;$args-\>getSubject()&nbsp; =\> Checkout Controller und forword darf funktioniert, wenn nicht also gibt andere Probleme mit Ihre Code.

Ja, dann ist wohl leider ein anderes Problem im Code - dummerweise habe ich das undokumentierte Plugin von jemand anderem übernommen. Dann werde ich wohl dessen Code debuggen müssen…

---

<div class="post-metadata">

### Author: ![Lukaschel](https://avatars.discourse-cdn.com/v4/letter/l/e56c9b/32.png) [@Lukaschel](https://forum.shopware.com/u/Lukaschel)
#### Post date: [4. Dezember 2018 um 21:26 UTC](https://forum.shopware.com/t/wie-wenn-notig-per-plugin-den-bestell-finish-prozess-abbrechen/56754/4 "2018-12-04T21:26:28Z")

</div>

> class Frontend implements SubscriberInterface { public static function getSubscribedEvents() { return array( ‚Shopware\_Controllers\_Frontend\_Checkout::finishAction::before‘ =\> ‚onCheckoutFinishBefore‘ ); } public function onCheckoutFinishBefore(\Enlight\_Hook\_HookArgs $args) { $controller = $args-\>getSubject(); $testerrors = array(); $test = 1; if ($test = 1) { return $controller-\>forward( ‚confirm‘, null, null, [‚testErrors‘ =\> $testerrors] ); } } }

Vielleicht so ? 😉

---

<div class="post-metadata">

### Author: ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)
#### Post date: [5. Dezember 2018 um 07:17 UTC](https://forum.shopware.com/t/wie-wenn-notig-per-plugin-den-bestell-finish-prozess-abbrechen/56754/5 "2018-12-05T07:17:12Z")

</div>

Hallo @yodorada‍

der Lösungsansatz b mit dem PreDispatch Event ist schon richtig. Auch solltest du über die Methode getSubject die Instanz des Controllers bekommen und somit auch die Methode „forward“ zur Verfügung haben. Wie lautet denn die Fehlermeldung konkret? Evtl. helfen dir auch diese Angaben, um an etwas aussagekräftigem zu kommen:&nbsp;[https://community.shopware.com/Fehlermeldungen-in-Shopware-debuggen\_detail\_1880.html#Frontend\_Error\_Reporter](https://community.shopware.com/Fehlermeldungen-in-Shopware-debuggen_detail_1880.html#Frontend_Error_Reporter)

Viele Grüße aus Schöppingen

![cool](http://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/shopware.png "cool")&nbsp;Michael Telgmann
