0

我正在尝试按照此链接以编程方式从前端添加产品:

Magento:以编程方式添加新产品

但我想扩展它以添加自定义选项。我添加了以下代码

$options = array();
        $options[$sku] = array(
        'title' => 'Option Title',
        'type' => 'radio',
        'is_require' => 1,
        'sort_order' => 0,
        'values' => array()
        );
        $options[$addvp['product']['sku']]['values'][] = array(
        'title' => 'Option Value 1',
        'price' => 0.00,
        'price_type' => 'fixed',
        'sku' => '',
        'sort_order' => '1'
        );
        $options[$sku]['values'][] = array(
        'title' => 'Option Value 2',
        'price' => 89.00,
        'price_type' => 'fixed',
        'sku' => '',
        'sort_order' => '1'
        );

    foreach($options as $sku => $option) {
        $id = Mage::getModel('catalog/product')->getIdBySku($sku);
        $product = Mage::getModel('catalog/product')->load($id);

        if(!$product->getOptionsReadonly()) {
        $product->setProductOptions(array($option));
        $product->setCanSaveCustomOptions(true);
        //$product->save();
        }
    }

但它会打印此错误,而不是向产品添加自定义选项。

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`vendor`.`catalog_product_entity`, CONSTRAINT `FK_CAT_PRD_ENTT_ATTR_SET_ID_EAV_ATTR_SET_ATTR_SET_ID` FOREIGN KEY (`attribute_set_id`) REFERENCES `eav_attribute_set` (`attribute_set_id`) ON DEL)
4

2 回答 2

1

http://www.fontis.com.au/blog/magento/add-product-custom-options

笔记:

上面的链接做了我想做的事。但是要记住一件事,您必须将自定义选项添加到已经存在/保存的产品中。

于 2012-08-06T09:21:58.020 回答
0

我有一个类似的问题。事实证明,自动生成的 SKU 不知何故无效或未正确保存在我为测试而创建的新产品上。该产品并非无效,因为它确实在第一次运行时正确保存,但是当我通过 CMS 重新访问该产品并尝试单击“保存并继续”时,它突然提示我输入 SKU。当我重新输入自动生成的 sku 时,它起作用了!

所以简短的回答是:通过该 SKU 编号检查您的产品是否存在。如果是,请重新检查 SKU 是否已正确保存。

于 2014-05-05T09:41:39.667 回答