题
我正在为客户实施一个插件,该插件将使用产品上的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()));
// [...]
我这样说:他们在那里被使用:-)