【问题标题】:Catching magento product status change and validate against product data捕捉 magento 产品状态变化并根据产品数据进行验证
【发布时间】:2013-10-29 17:00:57
【问题描述】:

我正在尝试在 magento 项目中实现功能,以在将每个产品的状态更改为启用之前对其进行验证。我有一个包含布尔值的自定义属性(内部状态),如果此值为“false”,我不希望管理员用户能够启用产品。

如何捕获此事件,以便显示错误消息并且不允许状态更改?

【问题讨论】:

    标签: magento


    【解决方案1】:

    我终于找到了解决方案,所以我发帖以防其他人需要它。

    第一步是向 /code/local/Custom/Catalog/etc/config.xml 中的事件 catalog_product_save_before 添加观察者

        <events>
    
            <catalog_product_save_before>
                <observers>
                    <custom_catalog_observer>
                        <class>Custom_Catalog_Model_Observer</class>
                        <method>validateStatusChange</method>
                    </custom_catalog_observer>
                </observers>
            </catalog_product_save_before>
        </events>
    

    然后我使用方法 validateStatusChange 创建了 Observer.php 文件:

    <?php
    
    class Custom_Catalog_Model_Observer {
    
    public function validateStatusChange(Varien_Event_Observer $observer) {
        $product = $observer->getEvent()->getProduct();
        Mage::log('Status change id ' . $product->getId() . " NEW " . $product->getData('status') . " OLD " . $product->getOrigData('status') . " SAP " . $product->getData('sap_disabled'));
        if ($product->getData('status') == 1 && $product->getData('sap_disabled') == 1) {
            Mage::getSingleton('core/session')->addError('Product status can not be changed to Enabled while SAP Disabled is active!');
            $product->setData('status', 2);
            $product->save();
        }
        return true;
    }
    
    
    }
    
    ?>
    

    自定义模块需要通过创建文件Custom_Catalog.xml在/etc/modules中注册

    <?xml version="1.0"?>
    <config>
      <modules>
        <Custom_Catalog>
          <active>true</active>
          <codePool>local</codePool>
           <depends>
            <Mage_Catalog />
           </depends>
        </Custom_Catalog>
       </modules>
    </config>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多