Frage

Ich implementiere ein Plugin für einen Kunden, der den Wert „Max Sale-Menge“ eines Magento-Lagerstücks auf einem Produkt verwendet, um einen oberen Kundenkauf einzustellen.

Da ich diesen Zustand in mehreren Ereignissen und Controller -Aktionen überprüfen muss, kann ich sie nicht nur an einen Beobachter enthalten, bei dem ich eine lokale geschützte Funktion erstellen kann, die diese Bedingung von meinem Ressourcenmodell überprüft.

In meinen Anforderungen werde ich die CART -Ergänzungen einschränken. Aber ich befinde mich in einem Dilemma: vom Controller addAction Ich muss mich darauf verlassen throw - Jedoch von sales_quote_merge_before Es scheint, dass ich die beleidigenden Produkte effektiv verunreinigen und eine Nachricht an die veröffentlichen könnte customer/session, Ich konnte jedoch wie bei der Controller -Aktion stattdessen werfen und fangen.

Meine Fragen sind:

  • Ist diese schlechte Praxis, auf die man sich effektiv verlassen kann? throw vom Modulhelfer?
  • Ist dies eher eine Modellmethode, die ich aufrufen muss?
  • Was ist die beste Designstrategie, mit der ich mein Modul trocken halten kann?

Bearbeiten:

Ab EE 1.12 sehe ich nur 4 Fälle von Helper/Data.php Dateien, die werfen - 3 davon sind API2/OAuth. Magier/Core macht es auch einmal, aber dies scheint die einzige andere Instanz zu sein. Verschiedene 3. Parteien sehen hier aus, als verfolgen sie hier unterschiedliche Ansätze.

Jedes Feedback ist willkommen.

War es hilfreich?

Lösung

Zu dem Kunden zu sagen: "Es tut uns leid, Sie können nicht so viel kaufen" ist eine Ausnahme. Der erwartete Fall ist, dass es genug gibt und Sie die Produkte in den Wagen legen. Und noch ein Wort: Es gibt versuchen, Blöcke innerhalb von Magento zu fangen, zum Beispiel in \Mage_Checkout_CartController::addAction:

// [...]
} catch (Mage_Core_Exception $e) {
        if ($this->_getSession()->getUseNotice(true)) {
            $this->_getSession()->addNotice(Mage::helper('core')->escapeHtml($e->getMessage()));
// [...]

Lassen Sie es mich so sagen: Sie sind da, um zu verwenden :-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top