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 に答える