以下是我的问题:以编程方式添加产品以引用的正确事件是什么(条目sales_flat_quote_item表).此外,我必须从用户/客户处捕获添加到购物车的商品/产品,因为他们的数据信息将决定将以编程方式添加的产品.所以场景将是:
在我看来,在将产品写入数据库之前,最好使用引号.
我弄清楚如何通过Mage_Sales_Model_Quote :: _ addCatalogProduct()添加它.但我想通过事件观察者而不是覆盖核心类来实现.
编辑
经过这篇文章的更多研究和建议,我能够让它运作起来.对我来说关键的是理解观察者中的对象,他们的类和类方法
var_dump(get_class($quote)); // $item // $product
var_dump(get_class_methods($quote)); // $item // $product
Run Code Online (Sandbox Code Playgroud)
现在知道方法可用,更容易弄清楚:
事件:
<events>
<checkout_cart_product_add_after>
<observers>
<unifiedarts_configurablebundleset>
<type>singleton</type>
<class>Namespace_ConfigurableBundleSet_Model_Observer</class>
<method>salesQuoteEditItems</method>
</unifiedarts_configurablebundleset>
</observers>
</checkout_cart_product_add_after>
</events>
Run Code Online (Sandbox Code Playgroud)
和观察者数据:
public function salesQuoteEditItems($observer)
{
$event = $observer->getEvent();
$item = $event->getQuoteItem();
$product = $item->getProduct();
$quote = $item->getQuote();
$parent = Mage::getModel('catalog/product')->load($product->getParentProductId());
if($parent->getTypeId() == 'bundle')
{
if($product->getTypeId() == 'configurable')
{
if ($simpleItem = $item->getOptionByCode('simple_product'))
{
// check if the simple product is in the table …Run Code Online (Sandbox Code Playgroud)