Question

Je suis un plugin pour mettre en œuvre un client qui utilisera la valeur Max Vente Quantité 'd'un article Stock Magento sur un produit comme un moyen de la fixation d'une limite supérieure sur les achats des clients au total.

Parce que je dois vérifier cette condition dans plusieurs événements, les actions du contrôleur, je ne peux pas contenir à seulement un observateur où je pouvais créer une fonction locale protégée qui vérifie cette condition de mon modèle de ressources.

Dans mes besoins, je limiterons les additions panier. Mais je me trouve dans un dilemme: du contrôleur addAction je dois compter sur throw - mais de sales_quote_merge_before il semble que je pourrais effectivement désinitialiser les produits incriminés et envoyer un message à l'customer/session, cependant, je pouvais lancer et à attraper, respectivement avec l'action du contrôleur à la place.

Mes questions sont les suivantes:

  • Est-ce une mauvaise pratique de compter efficacement sur throw de l'aide du module?
  • Est-ce plutôt une méthode de modèle que je dois invoquer?
  • Quelle est la meilleure stratégie de conception qui me permet de garder mon module sec?

Modifier

Au EE 1,12 Je ne vois que 4 cas de fichiers Helper/Data.php qui jettent - 3 d'entre eux sont api2 / OAuth. Mage / Core, il fait une fois aussi, mais cela semble être le seul autre exemple. Divers 3e parties regardent comme ils adoptent des approches différentes ici.

Tous les commentaires sont les bienvenus.

Était-ce utile?

La solution

Dire au client, « nous sommes désolés, vous ne pouvez pas acheter tant » est une exception. Le cas est prévu, il y a assez et vous mettre les produits dans le panier. Et un mot de plus: Il y a des blocs try et catch à l'intérieur de magento, par exemple dans \Mage_Checkout_CartController::addAction:

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

Permettez-moi de le dire ainsi: Ils sont là à utiliser: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top