以编程方式添加具有自定义选项的多个产

时间:2013-12-16 10:24:58

标签: php magento

我正在尝试在php中开发一个代码,该代码将从旧订单中获取订单增量ID,并将创建包含相同产品的新订单以及产品自定义选项(如果有)。 获取par即使可以通过查询字符串添加产品也可以,但是我无法添加自定义选项。购物车页面显示:需要产品自定义选项。

我认为(不确定)我甚至成功通过soap api添加了带有自定义选项的产品,但是当我重定向到购物车时它显示了一个空的购物车。

我是初学者,所以如果它存在,请忽略任何愚蠢。 :d 带有查询字符串的代码如下:

$form_key = Mage::getSingleton('core/session')->getFormKey();
$arrProducts = array(
/*array
(
"product" => "3",
"qty" => 7
),*/
array
(
"product" => "1",
"qty" => 3,
"options" => array
                 (
                  2 => array(
                            "date" => "11/12/13",
                            "date_internal" => "2013-12-11 00:00:00"
                            ),
                  1 => "1"
                 )
header('Location: '.Mage::getUrl('checkout/cart/add/form_key/'.$form_key.'/', $arrProduct));

因此,这会指向包含该产品的页面,但要求我选择产品选项。 当我使用上面评论的其他产品时,它取得了成功。

即使我现在能够在购物车中添加没有自定义(带有id ='3'的产品)选项的产品。代码如下:

<?php
require('../../../app/Mage.php'); //include mage.php
Mage::app();
Mage::getSingleton('core/session', array('name' => 'frontend'));
$form_key = Mage::getSingleton('core/session')->getFormKey();
//echo $form_key;
$cart = Mage::getSingleton('checkout/cart');

$product = new Mage_Catalog_Model_Product();

$product->load(2); 
//$product->setProductOptions();

$params = array(

            array

            (

            "product" => "3",

            "qty" => 1

            ),


            array
                (
                "product" => "2",

                "qty" => 2,

                "options" =>array
                                (
                                    2 => array
                                            (
                                                          "date" => "11/12/2013",
                                                    "date_internal"=> "2013-12-11 00:00:00"
                                                ),

                                    1 => "1"

                                    )
                    )
                );



  $cart->addProduct($product, $params);

  $cart->save(); 

   Mage::getSingleton('checkout/session')->setCartWasUpdated(true);

   header('Location:http://111.111.1.1/magento/checkout/cart');
    ?>

但它不适用于任何带有自定义选项的产品(ID为'2'的产品)。 错误消息:

致命错误:未捕获的异常“Mage_Core_Exception”,并显示消息“请指定所需的产品选项”。在C:\ xampp \ htdocs \ magento \ app \ Mage.php:594堆栈跟踪:#0 C:\ xampp \ htdocs \ magento \ app \ code \ core \ Mage \ Checkout \ Model \ Cart.php(284): Mage :: throwException('请指定...')#1 C:\ xampp \ htdocs \ magento \ pratmagento \ panel \ orders \ try2addtocart.php(53):Mage_Checkout_Model_Cart-&gt; addProduct(Object(Mage_Catalog_Model_Product),Array)在第594行的C:\ xampp \ htdocs \ magento \ app \ Mage.php中抛出#2 {main}

1 个答案:

答案 0 :(得分:0)

需要为产品设置website_ids。

$product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId()));