小编Flo*_* P.的帖子

Magento - 通过观察者以编程方式将产品添加到购物车

以下是我的问题:以编程方式添加产品以引用的正确事件是什么(条目sales_flat_quote_item表).此外,我必须从用户/客户处捕获添加到购物车的商品/产品,因为他们的数据信息将决定将以编程方式添加的产品.所以场景将是:

  1. 用户/客户将产品添加到购物车
  2. 找到适合挂钩的事件
  3. 获取有关添加到购物车的产品的信息
  4. 根据产品ID将其他产品添加到购物车并修改其数据

在我看来,在将产品写入数据库之前,最好使用引号.

我弄清楚如何通过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)

events observers magento

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

events ×1

magento ×1

observers ×1