【问题标题】:Programmatically Add multiple Products with Custom Options使用自定义选项以编程方式添加多个产品
【发布时间】:2014-01-03 16:47:15
【问题描述】:

我正在尝试在 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->addProduct(Object(Mage_Catalog_Model_Product), Array) # 2 {main} 在 C:\xampp\htdocs\magento\app\Mage.php 第 594 行抛出

【问题讨论】:

  • 所以你想复制最后一个订单(产品+自定义选项)并将订单ID加一?
  • 是的,绝对...我想要那个,但无法设置自定义选项的值。
  • 自定义选项之一是日期类型。提前谢谢....
  • 您能告诉我们哪些自定义选项(数据类型除外)以便我们为您提供帮助吗?
  • 类型 1= 日期类型 2= 下拉菜单(只有 2 个选项)

标签: php magento


【解决方案1】:

需要为产品设置website_ids。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-26
    • 2023-03-17
    • 2016-02-04
    • 2020-11-28
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多