ich wollte den Checkout Controller bei Shopware 5 überschreiben.Finde irgendwie keine Anleitung dazu

Hallo Leute, kann mir evtl jemand helfen.

Ich wollte eine Funktion die bei der Action finish aufgerufen wird überschreiben.

bootstrap :

...

$this->subscribeEvent(
    'Enlight_Controller_Dispatcher_ControllerPath_Frontend_Checkout',
    'onFrontendCheckoutDispatcher'
);

...

public function onFrontendCheckoutDispatcher(Enlight_Event_EventArgs $args)
{
    if($args->getRequest()->getActionName() == 'finish')
    {
        return $this->Path() . '/Controllers/CheckoutShipping.php';
    }
}

Die Datei CheckoutShipping.php :

class Shopware_Controllers_Frontend_CheckoutShipping extends Shopware_Controllers_Frontend_Checkout
{
    public function getSelectedDispatch()
    {
        die('TEST');
    }
}

Damit wollte ich die Funktion " getSelectedDispatch" abändern. Es kommt aber nicht rein. Hilfe !!!

Guten Morgen,

Mein Ansatz wäre folgender:

  1. Einen eigenen Controller implementieren (siehe https://developers.shopware.com/developers-guide/controller/)
  2. Bei dem von Dir abgefangenen Event dann auf diesen neuen Controller redirecten (ACHTUNG: Das muss ein direkter Forward sein, kein 301 Redirect)

@Synonymous schrieb:

Guten Morgen,

Mein Ansatz wäre folgender:

  1. Einen eigenen Controller implementieren (siehe https://developers.shopware.com/developers-guide/controller/)
  2. Bei dem von Dir abgefangenen Event dann auf diesen neuen Controller redirecten (ACHTUNG: Das muss ein direkter Forward sein, kein 301 Redirect)

Das geht nicht, denn forward muss im Controller sein und Controller greift nicht

Im Event kann ich mir ja den aktuellen Controller holen und dann redirecten. Genau so habe ich das eben in einem Plugin gelöst - dort war es jedoch ein 301 Redirect. Sollte aber ein interner Redirect auch problemlos funktionieren.

__________________________________________________
Konnte ich Dir helfen? Dann freue ich mich über ein Danke :wink: