【问题标题】:Magento 1.6 CE product save observer, runs fine, but expected data not foundMagento 1.6 CE 产品保存观察者,运行良好,但未找到预期数据
【发布时间】:2012-06-24 16:39:41
【问题描述】:

我创建了一个观察者,它似乎被检测到并且运行良好。 观察者用于向产品动态添加自定义选项数据。

我最初遇到了 MYSQL 约束违规,在网上研究后,我认为这是由于观察者试图将自定义选项数据添加到数据库中,在我创建的新产品之前,实际上已保存到数据库中。

我更改了我的 config.xml,因此“catalog_product_save_before”现在是“catalog_product_save_after”。 产品保存良好,但我的观察者中指定的自定义选项数据不在产品详细信息中。

我的 config.xml:

<events>
            <catalog_product_save_after>
                <observers>
                    <micoavp>
                        <type>singleton</type>
                        <class>Bsm_Micoavp_Model_Observer</class>
                        <method>Add_CustomOptions_Automatically</method>
                    </micoavp>
                </observers>
            </catalog_product_save_after>
</events>   

我的观察者代码:

public function Add_CustomOptions_Automatically($observer) {


       $event = $observer->getEvent();
       $product = $event->getProduct();


   $optionData = array(
                      'is_delete'         => 0,
                      'is_require'        => false,
                      'previous_group'    => '',
                      'title'             => 'want to preorder ? ',
                      'type'              => 'checkbox',
                      'price_type'        => 'fixed',
                      'price'             => '20.0000',
                      'sort_order'        => 0,
                      'values'            => array(
                                                    array(
                                                    'is_delete'     => 0,
                                                    'title'         => 'preorder',
                                                    'price_type'    => 'percent',
                                                    'price'         => -20,
                                                    'sku'           => 'product sku',
                                                    'option_type_id'=> -1,
                                                    ))

                 );
   $product->setHasOptions(1);

  $opt = Mage::getModel('catalog/product_option');
   $opt->setProduct($product);
   $opt->addOption($optionData);
   $opt->saveOptions();      

          Mage::log("option should be added now");

 }

我从这个 url 得到了代码,它声明它是 1.5 CE: http://www.webmasterbulletin.net/2011/04/magento-programmatically-add-custom-options/1417

有谁知道是否需要进行 1.6 相关的调整才能使其正常工作? 指定的自定义选项数据只是现阶段的一个测试,一旦我可以让它工作,我将更改要添加的选项数据。

非常感谢

【问题讨论】:

  • 我更新了代码,以包括 mage:log 条目...并检查我尝试添加的选项是否已经可用。似乎,当我更新配置产品时,如果属性不可用,则会添加属性。如果是,则不会添加它们。当我添加一个新的简单/配置产品时,没有添加属性(但法师:日志说它添加了选项,所以一定是产品分配问题)。当我运行此方法时...此时产品是否已保存?也许我必须先保存产品?
  • 更奇怪!向法师日志条目添加了更多数据。似乎它正在为正确的产品添加选项,我将产品 ID 添加到日志中。当我重新保存这些产品时,它说这些选项不可用......所以再次添加它们。但没有显示自定义选项数据。为什么它会在更新时将它们正确添加到现有产品中......而不是保存或更新时添加到新产品中?
  • 有人吗?这应该可以吗?谢谢

标签: magento save product


【解决方案1】:

上面的代码似乎一切正常。只需要在最后添加以下行。

 $product->addOption($opt);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2014-07-09
    • 1970-01-01
    • 2014-07-15
    • 2011-07-22
    • 2021-09-14
    • 1970-01-01
    相关资源
    最近更新 更多