Добавление пользовательской опции к продукту программно в интерфейсном контроллере пользовательского модуля?

Я пытаюсь добавить продукт из внешнего интерфейса программно по этой ссылке:

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)

person atif    schedule 06.08.2012    source источник


Ответы (2)


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

Примечание.

Приведенная выше ссылка сделала то, что я хочу. Но следует помнить одну вещь: вы должны добавить пользовательскую опцию к продукту, который уже существует/сохранен.

person atif    schedule 06.08.2012

У меня была аналогичная проблема. Выяснилось, что автоматически сгенерированный SKU каким-то образом недействителен или неправильно сохранен в новом продукте, который я создал для тестирования. Продукт не был недействительным, так как он правильно сохранился с первого раза, но когда я повторно посетил продукт через CMS и попытался нажать «сохранить и продолжить», мне внезапно предложили ввести SKU. Когда я снова ввел автоматически сгенерированный артикул, все заработало!

Таким образом, короткий ответ будет таким: проверьте, существует ли ваш продукт по этому номеру SKU. Если это так, еще раз проверьте правильность сохранения SKU.

person Seph Soliman    schedule 05.05.2014