Ich arbeite an einem Modul, in dem ich das Verhalten der getTracking()
Methode in einem Versandmodenträgermodell ändern muss . Nehmen wir zum Beispiel diesen Standard: Mage_Usa_Model_Shipping_Carrier_Dhl
Meine Anforderung besteht darin, das von dieser Methode zurückgegebene Tracking-Ergebnis zu ändern.
Ich habe zwei Lösungen im Sinn, bin mir aber nicht sicher, ob die eine oder die andere besser ist (oder vielleicht gibt es eine dritte Lösung, die noch besser ist).
Lösung 1: Klassisches Umschreiben
Schreiben Sie das Modell und die Methode neu und fügen Sie meine benutzerdefinierte Änderung vor der return-Anweisung hinzu.
Der Code würde folgendermaßen aussehen:
public function getTracking()
{
$result = parent::getTracking();
// My modifications here
return $result;
}
Lösung 2: Umschreiben und Ereignis auslösen
Schreiben Sie das Modell und die Methode neu. Holen Sie sich das ursprüngliche Ergebnis mit parent::getTracking
, senden Sie ein benutzerdefiniertes Ereignis und geben Sie das Ergebnis zurück. Verwenden Sie einen Beobachter , um die Ergebnisse zu ändern.
Der Code würde folgendermaßen aussehen:
public function getTracking()
{
$result = parent::getTracking();
Mage::dispatchEvent('my_custom_event', array('result' => $result));
return $result;
}
Für mich ist die zweite Lösung besser, aber ich fühle mich beim Umschreiben nicht gut.
Meine Fragen sind also:
- Welche dieser Lösungen ist die beste?
- Gibt es ein dynamisches Ereignis, von dem ich nicht weiß, dass ich es beobachten kann, anstatt dies alles zu tun?
- Irgendwelche anderen Vorschläge ?