观察者只运行一次

时间:2014-01-10 04:12:23

标签: magento events

活动只运行一次。我通过观察者在事件checkout_quote_init 中添加购物车后,在报价中添加自定义值     它工作正常,但如果客户登录并下订单,那么在第一顺序值插入报价但在第二次观察员没有运行。

<checkout_quote_init>
    <observers>
        <youva_custom>
            <type>singleton</type>
            <class>custom/observer</class>
            <method>setqoutevalue</method>
        </youva_custom>
    </observers>
 </checkout_quote_init> 

 public function setqoutevalue($observer) {
     $event = $observer->getEvent();
     $_quote = $event->getQuote();
     $_quote->setCustomevalue($customevalue);
     $_quote->save();
 }

1 个答案:

答案 0 :(得分:0)

如果您查看调度您正在使用的事件的代码,您会看到这个(Mage_Checkout_Model_Session::getQuote()):

        if (!$this->getQuoteId()) {
            if ($customerSession->isLoggedIn() || $this->_customer) {
                $customer = ($this->_customer) ? $this->_customer : $customerSession->getCustomer();
                $quote->loadByCustomer($customer);
                $this->setQuoteId($quote->getId());
            } else {
                $quote->setIsCheckoutCart(true);
                Mage::dispatchEvent('checkout_quote_init', array('quote'=>$quote));
            }
        }

这意味着只有在创建报价时才会调度该事件。并且仅当用户未登录时。这意味着如果会话中已存在引用ID,则不会分派事件。

您可能想要使用其他事件。例如checkout_cart_product_add_after