In diesem Fall checkout_cart_add_product_complete
möchte ich, dass der Kunde auf eine externe Webseite http://www.example.com/
weitergeleitet wird. Dazu benutze ich diesen Code, der überhaupt nicht funktioniert: -
Ich habe die Methode " setRedirect()
" für beide Variablen " $response1
" und " $response2
" verwendet, aber beide zeigen mir die Warenkorbseite, während ich diese Seite sehen möchte http://www.example.com/
stattdessen.
Was ich will:
header()
" verwenden, wenn das Magento-Framework diese Funktionalität auf effiziente Weise zur Verfügung stellt. tl; dr: Korrigieren Sie den Beobachtercode unten.
Eine Notiz, bevor ich antworte: Stellen Sie sicher, dass der Beobachter ausgelöst wird; Durchlaufen Sie Ihren Code oder verwenden Sie die('here');
. Wie beschrieben, hat Ihre Beispielmethode nicht den richtigen Prototyp, um Ereignisbeobachterdaten zu empfangen (ein Argument fehlt).
Die Verwendung eines Ereignisbeobachters für die Umleitungslogik ist in diesem Kontext völlig angemessen, wie das Kernteam zeigt, das die Anforderungs- und Antwortobjekte explizit an den Beobachter übergibt. Ihr Versuch ist gut, aber ich denke, dass Sie Bedingungen und Konfigurationen haben, die dazu führen, dass die Ausführung zu Mage_Checkout_CartController::_goBack()
, speziell zur Zeile
Also müssen wir unseren Ansatz überarbeiten. Jetzt können Sie verhindern, dass eine Anfrage- / Antwortlogik nach Ihrer Ereignisbeobachtung verarbeitet wird, indem Sie die Antwort manipulieren und die sendResponse()
-Methode des Front-Controllers wie unten gezeigt aufrufen ( nb: tun Sie das nicht! ):
Das sollte funktionieren, aber ich denke, es führt zu Besorgnis erregenden Bereichen, indem es die Ausgabe einer ätherischen Systemkomponente (EDA) auslöst. Mal sehen, ob es etwas in der Command-Control-Struktur gibt, das wir benutzen können ...
Gleich nachdem die checkout_cart_add_product_complete
-Ereignisausführung zur _goBack () -Methode des Wagen-Controllers gekommen ist. Das Problem mit diesem Methodennamen besteht darin, dass er mehr als den Namen impliziert:
Es sieht so aus, als könnten wir einfach ein return_url
param auf das Anfrageobjekt setzen und erreichen, was wir brauchen.
Ich habe das getestet und es sollte den Trick machen!
Sie können die Methode _redirectUrl () verwenden um auf externe Webseiten von Magento umzuleiten.