我可以使用什么magento方法来停止结账按钮才能正常运行直到某个条件成立? 基本上是用户已经删除了篮子上的产品,而他必须在两个产品都在篮子上之前不能结账
public function deleteAction()
{
parent::deleteAction();
if($this->_getCart()->getQuote()->getItemsCount() == 1) {
$this->addErrorMessage('Please remove one voucher. Or add one More infant milk product');
}
}
答案 0 :(得分:4)
使用配置标志checkout/options/onepage_checkout_enabled
:
public function deleteAction()
{
parent::deleteAction();
if($this->_getCart()->getQuote()->getItemsCount() == 1) {
Mage::app()->getStore()->setConfig('checkout/options/onepage_checkout_enabled',0);
}
}
附注:
这里没有必要重写控制器,因为你可以在postdispatch控制器观察器操作中处理它:
<events>
<controller_action_postdispatch_checkout_cart_delete>
<observers>
<yourmodule_postdispatch_delete>
<class>yourmodel/observer</class>
<method>deletePostdispatch</method>
</yourmodule_postdispatch_delete>
</observers>
</controller_action_postdispatch_checkout_cart_delete>
</events>
观察者方法看起来像:
public function deletePostdispatch($observer)
{
if(Mage::getSingleton('checkout/session')->getQuote()->getItemsCount()==1){
Mage::app()->getStore()->setConfig('checkout/options/onepage_checkout_enabled',0);
}
}
HTH,干杯!