Magento - Kunden von Observer-Methode umleiten

8

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: -

%Vor%

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:

  • Ich möchte die Controller-Klasse nicht überschreiben, nur um den Kunden umzuleiten, wenn ich den Event Observer-Prozess effektiv nutzen kann.
  • Ich möchte nicht die eingebaute PHP-Funktion " header() " verwenden, wenn das Magento-Framework diese Funktionalität auf effiziente Weise zur Verfügung stellt.
Knowledge Craving 17.03.2012, 09:57
quelle

3 Antworten

16

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

, fließt %Vor%

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! ):

%Vor%

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:

%Vor%

Es sieht so aus, als könnten wir einfach ein return_url param auf das Anfrageobjekt setzen und erreichen, was wir brauchen.

%Vor%

Ich habe das getestet und es sollte den Trick machen!

    
benmarks 17.03.2012, 14:43
quelle
2

Ich musste durch getFront gehen:

%Vor%     
Klaus 08.05.2013 22:28
quelle
1

Sie können die Methode _redirectUrl () verwenden um auf externe Webseiten von Magento umzuleiten.

    
Radosav227 24.08.2015 09:40
quelle

Tags und Links