[GELÖST] Eigene (Formular-) Action wird ausgeführt, erzeugt aber trotzdem eine Fehlermeldung

Hallo liebe shopware - Gemeinde,

ich habe folgendes Szenario:

Ich habe ein Formular, das Werte speichern soll und habe deshalb beim Formular eine eigene Aktion hinterlegt, die ich im Plugin abfrage.

Das Formular:

     ...

Das Event:

$this->subscribeEvent(
     'Enlight_Controller_Action_Frontend_Checkout_saveMyData', 
     'onSaveMyData'
);

 

Die Funktion:

public function onSaveMyData(Enlight_Event_EventArgs $arguments){
     $view = $arguments->getSubject()->View();
     $view->addTemplateDir($this->Path() . 'Views/');
	
     /* SQL */
			
     /* redirect */
     $arguments->getSubject()->redirect('checkout/cart');
}

Die Action wird auch ausgeführt und der Wert gespeichert.

Nur wirft es in einem error - Log folgende Meldung:

core.ERROR: exception 'Enlight_Controller_Exception' with message 'Action "Frontend_Checkout_saveMyDataAction" not found failure' in /www/htdocs/xxxx/engine/Library/Enlight/Controller/Action.php:387 Stack trace: #0

Ebenso wirft es eine Fehlermeldung im Frontend, wenn ich die Shopware Debug Parameter setze (speziell  ‘throwExceptions’ => true), also:

,'front' => array(
     'showException' => true,
     'throwExceptions' => true,
     'noErrorHandler' => false,
),

Fehlermeldung im Frontend:

Fatal error: Uncaught exception 'Enlight_Controller_Exception' with message 'Action "Frontend_Checkout_saveMyDataAction" not found failure' in /www/htdocs/xxxx/engine/Library/Enlight/Controller/Action.php:402 Stack trace: #0 /www/htdocs/xxxx/engine/Library/Enlight/Controller/Action.php(159): Enlight_Controller_Action->__call('saveMy...', Array) #1 /www/htdocs/xxxx/engine/Library/Enlight/Controller/Action.php(159): Shopware_Proxies_ShopwareControllersFrontendCheckoutProxy->saveMyDataAction() #2 /www/htdocs/xxxx/engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch('saveMy...') #3 /www/htdocs/xxxx/engine/Library/Enlight/Controller/Front.php(223): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) #4 /www/htdocs/xxxx/engine/Shopware/Kernel.php(177): Enlight_Controller in /www/htdocs/xxxx/engine/Library/Enlight/Controller/Action.php on line 402

Wie kann ich umgehen, das weder eine Fehlermeldung bei gesetzten Debug - Parametern noch ein Log - Eintrag erstellt wird (ohne Shopware Debug - Parameter erscheint im Frontend ja auch keine Fehlermeldung, es wird ja auch alles korrekt gespeichert und auch die Weiterleitung funktioniert korrekt)? Jemand von Shopware, der da einen Tipp geben kann [@Stephan Pohl](http://forum.shopware.com/profile/2/Stephan Pohl “Stephan Pohl”)‍ , [@Daniel Nögel](http://forum.shopware.com/profile/4010/Daniel Nögel “Daniel Nögel”)‍ , [@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann “Michael Telgmann”)‍ , [@Philipp Schuch](http://forum.shopware.com/profile/13283/Philipp Schuch “Philipp Schuch”)‍ , [@Philipp Lammers](http://forum.shopware.com/profile/3515/Philipp Lammers “Philipp Lammers”)‍ ?

 

Beste Grüße

Sebastian

Hallo,

über einen “Denkanstoß” wäre ich sehr erfreut - ich werde ja sicher nicht der einzige sein, der so etwas schon einmal umgesetzt hat oder umsetzen möchte?

Beste Grüße

Sebastian

Hallo Sebastian,

also wenn ich dich richtig verstanden habe, wird alles in der Action korrekt ausgeführt, aber dennoch kommt aus zu der Exception? Versuch mal ein return true; am Ende der Action einzubauen

Viele Grüße aus Schöppingen

cool Michael Telgmann

@Michael Telgmann schrieb:

Hallo Sebastian,

also wenn ich dich richtig verstanden habe, wird alles in der Action korrekt ausgeführt, aber dennoch kommt aus zu der Exception? Versuch mal ein return true; am Ende der Action einzubauen

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo Michael,

vielen lieben Dank für deine Antwort. Ja genau, die Aktion des Ändern des Wertes wird korrekt durchgeführt, aber trotzdem kommt die Exception.

Ein return true nach dem redirect hat tatsächlich geholfen:

$arguments->getSubject()->redirect('checkout/cart');
			
return true;

Nun erscheint weder die Fehlermeldung bei der Nutzung der Debug - Parameter noch erstellt es einen entsprechenden Logeintrag dazu. Wäre ich wahrscheinlich nie drauf gekommen.

Michael, du bist mein Held des Tages Grin.

Beste Grüße

Sebastian