2014-01-10 2 views
0

Событие запускается только один раз. Я добавляю пользовательскую ценность в цитату после добавления продукта в корзину через observer по адресу event 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)); 
      } 
     } 

Это означает, что событие отправляется только тогда, когда создается котировка , и только тогда, когда пользователь не вошел в систему. Это означает, что если в сеансе уже есть идентификатор котировки, событие не будет отправлено.

Возможно, вы захотите использовать другое событие. Например, checkout_cart_product_add_after

Смежные вопросы