2016-04-13 15 views
2
o sepetine eklendiğinde Ben How to get Quote Item Id after adding a product to cart? gelen referans almış bu olaydan sonra Db tarlası güncellemeniz gerekir çünkü ürünün alıntı öğe kimliği almak gerekir

ürünü ekledikten sonra alıntı öğe kimliği olsun, ama bu sales_quote_product_add_after ve benim oberver fonksiyonudur: çalışmıyor, ben olay kullanmışarabası

:

da
$quoteItem = $observer->getEvent()->getQuoteItem(); 
$id = $quoteItem->getId(); 

Ben

$id = $quoteItem->getItemId(); 

Bu Ölümcül hata aşağıdaki atıyor ile çalıştık

Fatal error</b>: Call to a member function getId() on a non-object in <b>C:\xampp\htdocs\project\app\code\local\Custom\Module\Model\Observer.php</b> on line <b>1053</b><br /> 

10 benim de birçok başka bağlantılardan yanlış, ben almış başvuru yapıyorum bildirin ancak bunların hiçbiri çalışıyor.

+0

her şeyden önce echo $ quoteItem; bak burada sonuç var ya da var_dump ($ quoteItem) –

+0

sonucu; geçerli: BOŞ – user0509

+0

$ observer-> getEvent() -> getQuoteItem() bu beni hiç bu işi yapmak için ne yapması gerektiğini, ben her şeyi denedim bildirmek lütfen işlevini –

cevap

1

benim anlayış gereğince, bu olay için QuoteItems anahtarları almazsınız. Bu etkinlik, bir ürüne eklenen tüm öğeleri içeren öğeler dizisini sağlar. Yani kodunuzu çok değiştirmek zorunda değilsiniz.

$item = $observer->getEvent()->getItems()[0]; 
$item_id = $item->getId(); 

İstediğiniz sonucu vermelidir.

+0

bu boş bir sonuç – user0509

1

Birinin sepete bir öğe eklediğinde bir yöntemi çağırır sizin modül yapılandırma dosyasında tanımlanan bir gözlemci olmalıdır. Aşağıdaki gibi bir şey;

<events> 
     <sales_quote_item_set_product> 
      <observers> 
       <quoteitem_set_eta_data> 
        <type>singleton</type> 
        <class>NameSpace_Eta_Model_Observer</class> 
        <method>setEtaOnQuoteItem</method> 
       </quoteitem_set_eta_data> 
      </observers> 
     </sales_quote_item_set_product> 
    </events> 

sonra aşağıdaki kullanarak alıntı öğeye erişimi olan erecek gözlemci yöntemi; size yardımcı olabilecek kod takiben

public function setEtaOnQuoteItem($oObserver) { 
    $oQuoteItem = $oObserver->getQuoteItem(); 
    $quoteId = $oQuoteItem->getItemId(); 
} 
+0

bu doğru alıntı öğe kimliği döndürmüyordur dönüyor, bu sepetinde birden çok öğe varsa alıntı öğe kimliğiyle ilk değerini döndürüyor. – user0509

+0

Üzgünüm, öğe kimliği biti test etmedi. Bu yöntem, Alıntı Öğesi nesnesini döndürüyor. Bunun yerine item nesnesinde getItemId() öğesini çağırmayı deneyin. Cevabımı bunu yansıtacak şekilde güncelledim. – Ashley

0

,

$customer = Mage::getModel('customer/customer')->load($customerId); 
$quote = Mage::getModel('sales/quote')->setSharedStoreIds($storeIds) 
    ->loadByCustomer($customer); 
$collection = $quote->getItemsCollection(); 
print_r($collection->getData()); 

Yük CUSTOMER_ID müşteri ve alıntı ayrıntıları alabilirsiniz böylece alıntı bilgi almak.

İlgili konular