2014-01-10 87 views
0

事件只运行一次。我在通过观察员将产品添加到购物车后添加了自定义价值事件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(); 
} 

回答

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