【问题标题】:add product to cart with custom options使用自定义选项将产品添加到购物车
【发布时间】:2012-12-04 07:46:59
【问题描述】:

我必须创建一个(虚拟的、简单的)产品,然后以编程方式添加到购物车,到目前为止我已经这样做了。现在我必须在此产品添加到购物车时设置自定义选项。但什么也没发生。这是我的代码

  $product = Mage::getModel('catalog/product')->load($product_id);

    $cart = Mage::getModel('checkout/cart');
    $cart->init();


    $params = array(
        'product' => $product->getId(), // This would be $product->getId()
        'qty' => 1,
        'options' => array(
            34 => "value",
            35 => "other value",
            53 => "some other value"
        )
    );      



    try {   
        $cart->addProduct($product, new Varien_Object($params));
        Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
        $cart->save();
    }
    catch (Exception $ex) {
        echo $ex->getMessage();
    }

【问题讨论】:

  • 只用$params 替换new Varien_Object($params) 是否有效?
  • 这行得通,我现在才知道。它在 qoute_item 表中添加值。但价值对购物车页面不可见。就像我们从后端添加的其他自定义选项一样。

标签: magento product cart


【解决方案1】:

这是我想出的成功代码。

$a_options = array(
    'options' => array(
         'label' => 'Choice',
         'value' => $pkg_selected_products,
    )
);

$quoteItem->addOption(new Varien_Object(
    array(
        'product' => $quoteItem->getProduct(),
        'code' => 'additional_options',
        'value' => serialize($a_options)
    )
));

$quote->addItem($quoteItem);
$quote->save();

【讨论】:

  • 添加后出现空白页
  • 它将在购物车页面中添加一个文本。我们如何将它用于图像。(即选项类型是图像)
  • $quoteItem 是如何创建的?
【解决方案2】:

我在使用日期自定义选项字段时遇到问题,无法通过我的控制器功能添加产品。

所以我必须在 Magento 方式上破坏/爆炸,并将其放在参数上到AddProduct(),如下所示。

    try {
        $cart = Mage::getModel('checkout/cart');
        $previousItemCount = $cart->getQuote()->getItemsCount();

        if ($previousItemCount <= 0) {
            $cart->init();
        }

        $params = $this->getRequest()->getParams();
        $product = Mage::getModel('catalog/product')->load($params['product_id']);

        $date = explode('/', $params['product_dtinvoice']);
        $date = array(
            'month' => $date[0],
            'day' => $date[1],
            'year' => $date[2],
        );

        $cart->addProduct(
            $product,
            new Varien_Object(array(
                'product' => $product->getId(),
                'qty' => 1,
                'options' => array(
                    '4' => array(
                        'month' => $date['month'],
                        'day' => $date['day'],
                        'year' => $date['year']
                    ),
                    '2' => $params['product_ean'],
                    '3' => $params['product_serialnumber'],
                    '1' => $params['product_seller'],
                ),
            ))
        );

        $cart->save();

        if ($previousItemCount < $cart->getQuote()->getItemsCount()) {
            $return = array('result' => true, 'msg' => '');
        } else {
            $return = array('result' => false, 'msg' => 'Did not possible to add this product to cart. Please contact the administrator');
        }

        $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($return));
    } catch(Exception $e) {
        Mage::throwException($e->getMessage());
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2013-06-26
    相关资源
    最近更新 更多