# Controller PreDispatch funktioniert nicht

**URL:** <https://forum.shopware.com/t/controller-predispatch-funktioniert-nicht/65235>\
**Category:** Programmierung\
**Created:** [5. März 2020 um 08:33 UTC](https://forum.shopware.com/t/controller-predispatch-funktioniert-nicht/65235 "2020-03-05T08:33:24Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Fezzzzy](https://avatars.discourse-cdn.com/v4/letter/f/90db22/32.png) [@Fezzzzy](https://forum.shopware.com/u/Fezzzzy)\
**Post date:** [5. März 2020 um 08:33 UTC](https://forum.shopware.com/t/controller-predispatch-funktioniert-nicht/65235/1 "2020-03-05T08:33:24Z")

</div>

Hallo,

ich muss die addAccessoriesAction&nbsp;im Checkout Controller ändern, damit alle bereits im Warenkorb befindlichen Artikel gelöscht werden, die über diese Funktion dann erneut zum Warenkorb hinzugefügt werden (ist ein spezieller Anwendungsfall).

Wenn ich die “$this-\>basket-\>sDeleteBasket();” im Core in der Action am Anfang einfüge, funktioniert das auch.

Mein Aufbau bisher:

```
  /**
 * @inheritdoc
 */
  public static function getSubscribedEvents()
  {
      return [
          'Enlight_Controller_Action_PreDispatch_Frontend_Checkout' => 'onPreDispatchCheckout'
      ];
  }

/**
 * @param \Enlight_Controller_ActionEventArgs $args
 */

  public function onPreDispatchCheckout(\Enlight_Event_EventArgs $args)
  {
    /** @var \Shopware_Controllers_Frontend_Checkout $controller */
     $controller = $args->get('subject');

    if ($controller->Request()->getActionName() === 'addAccessories') {
      $this->basket->sDeleteBasket();
    }

  }

```

Vielleicht kann mir jemand kurz auf die Sprünge helfen, danke!

---

<div class="post-metadata">

**Author:** ![Patrick\_Stahl](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/patrick_stahl/32/7679_2.png) [@Patrick\_Stahl](https://forum.shopware.com/u/Patrick_Stahl)\
**Post date:** [5. März 2020 um 16:50 UTC](https://forum.shopware.com/t/controller-predispatch-funktioniert-nicht/65235/2 "2020-03-05T16:50:28Z")

</div>

Moin @Fezzzzy‍,

ich habe deinen Code einfach mal bei mir eingebaut und habe ihn quasi sofort ans Laufen bekommen, ohne eine Änderung daran.  
Du hast das Plugin aber schon auch installiert und aktiviert, oder?

Nichtsdestotroz der Hinweis:  
Die Action “addAccessoriesAction” wird im Standard nicht mehr ausgeführt. Sofern du da keine Änderungen an deinem Theme / Code vorgenommen hast, wird das auch bei dir der Fall sein. Entsprechend würde deine If-Bedingung dann nie “wahr” sein.  
Falls du dich jetzt fragst, wie ich das dann erfolgreich getestet habe: Indem ich mein Theme so angepasst habe, dass die Action durchaus aufgerufen wird.

Bist du dir sicher, dass das die richtige Action für dein Vorhaben ist?

In Kurz gilt aber zu sagen: Dein Code als Solches ist korrekt. Ich glaube einfach, dass der Gedanke der Falsche ist.

Lieben Gruß  
 ![Shopware](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/86c57fbace799dd4eb1f1b8a2d3bdc1733f0aea1.png "Shopware")&nbsp;Patrick Stahl

---

<div class="post-metadata">

**Author:** ![Fezzzzy](https://avatars.discourse-cdn.com/v4/letter/f/90db22/32.png) [@Fezzzzy](https://forum.shopware.com/u/Fezzzzy)\
**Post date:** [21. März 2020 um 12:32 UTC](https://forum.shopware.com/t/controller-predispatch-funktioniert-nicht/65235/3 "2020-03-21T12:32:35Z")

</div>

Hallo [@Patrick Stahl]([http://forum.shopware.com/profile/1869/Patrick](http://forum.shopware.com/profile/1869/Patrick) Stahl “Patrick Stahl”)‍ ,

danke für Deine Rückmeldung!

Ich habe für einen speziellen Anwendungsfall, weil ich mehrere Artikel gleichzeitig in den Warenkorb hinzufügen muss, eine eigene sAddToBasket Form im Theme erstellt:

```
                    In den Warenkorb

```

Die Values werden beide mit doppeltem Semikolon “;;” getrennt.

Ich vermute, dass im&nbsp;Plugin bei mir irgendetwas nicht korrekt ist. Hier nochmal die komplette .php:

```
 'onPreDispatchCheckout'
      ];
  }

/**
 * @param \Enlight_Controller_EventArgs $args
 */
  public function onPreDispatchCheckout(\Enlight_Event_EventArgs $args)
  {
    /** @var \Shopware_Controllers_Frontend_Checkout $controller */
     $controller = $args->get('subject');

    if ($controller->Request()->getActionName() === 'addAccessories') {
      $this->basket->sDeleteBasket();
    }

  }

}

```

Es funktioniert wenn ich das Plugin deaktiviere und im Core selber die Funktion hinterlege.

Nachtrag: Beim aktivierten Plugin wie oben, erscheint folgender Fehler in der Console:  
POST [meineURL].de/checkout/addArticle 500 (Internal Server Error)

Vielleicht findet sich da ja noch ein Fehler…

Vielen Dank! Fezzzzy
