magento - Add extra item to the cart (observer) -



magento - Add extra item to the cart (observer) -

i seek add together product cart. have created observer this.

<?php class wp_plugadapter_model_observer { public function hooktocontrolleractionpostdispatch($observer) { if($observer->getevent()->getcontrolleraction()->getfullactionname() == 'checkout_cart_add') { mage::dispatchevent("add_to_cart_after", array('request' => $observer->getcontrolleraction()->getrequest())); } } public function hooktoaddtocartafter($observer) { $request = $observer->getevent()->getrequest()->getparams(); $_product = mage::getmodel('catalog/product')->load($request['product']); $extra_functions = $_product->getextra_functions(); if(!empty($extra_functions)){ $extra_functions = explode(',', $extra_functions); if(array_search('121', $extra_functions)){ $cart = mage::getsingleton('checkout/cart'); $cart->addproduct(10934, 1); $cart->save(); if (!$cart->getquote()->gethaserror()){ mage::log("product add together cart added cart."); }else{ mage::log("boem"); } } } } }

when check mine scheme log see next log message. product add together cart added cart.

i have no clue i'm doing wrong. when load script standalone it's working fine. example:

<?php include_once '../app/mage.php'; mage::app(); umask(0); $session = mage::getsingleton('core/session', array('name'=>'frontend')); $cart = mage::getsingleton('checkout/cart'); $cart->addproduct(10934, 1); $cart->save();

is possible in observer have in different way?

the problem cart's quote object not saved database , later in request processing overwritten quote object session. why cart quote not saved quite confusing. save method of quote model expects internal property _hasdatachanges set true. property is, however, remains @ false, though product added quote.

you can forcefulness property set true adding info (any property do) quote using setdata method:

$cart = mage::getsingleton('checkout/cart'); $cart->addproduct(10934, 1); //force _hasdatachanges true $cart->getquote()->setdata('updated', true); $cart->save();

alternatively can utilize checkout session quote object add together product cart

if(array_search('121', $extra_functions)){ $cart = mage::getsingleton('checkout/cart'); $qty = 1; $quote = mage::getsingleton('checkout/session')->getquote() ->addproduct( mage::getmodel('catalog/product')->load(10934), $qty) ->save(); $cart->save(); if (!$cart->getquote()->gethaserror()){ mage::log("product add together cart added cart."); }else{ mage::log("boem"); } }

magento

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -