我正在为客户实施一个插件,该插件将使用产品上的Magento股票物品的“最大销售数量”值作为设置总客户购买的上限的手段。

因为我需要在多个事件,控制器操作中检查此条件,所以我不能仅将其包含在一个观察者身上,在那里我可以创建一个局部保护功能,从我的资源模型中检查此条件。

根据我的要求,我将限制购物车的增加。但是我发现自己处于困境:来自控制器 addAction 我需要依靠 throw - 但是来自 sales_quote_merge_before 看来我可以有效地揭示有问题的产品,并向 customer/session, 不过,我可以分别与控制器动作一样扔和捕捉。

我的问题是:

  • 有效地依靠这种不良习惯吗 throw 来自模块助手?
  • 这是我需要调用的一种模型方法吗?
  • 什么是最好的设计策略,使我可以保持模块干燥?

编辑:

从EE 1.12开始,我只看到4个实例 Helper/Data.php 投掷的文件 - 其中3个是API2/OAUTH。 Mage/Core也可以做一次,但这似乎是唯一的实例。各种第三方看起来像在这里采取不同的方法。

欢迎任何反馈。

有帮助吗?

解决方案

对客户说:“我们很抱歉,您不能购买太多”是一个例外。预期的情况是,就足够了,您将产品放入购物车中。还有一个词:例如 \Mage_Checkout_CartController::addAction:

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

我这样说:他们在那里被使用:-)

许可以下: CC-BY-SA归因
scroll top