无法覆盖Sales Resource Model Collection类

时间:2013-08-12 04:54:45

标签: magento

我正在尝试覆盖 Mage_Sales_Model_Resource_Order_Collection

我的自定义模块的配置:

<?xml version="1.0" encoding="UTF-8"?>


<config>
    <modules>
        <Abc_Salesextend>
            <version>0.1.0</version>
        </Abc_Salesextend>
    </modules>

    <global>       
        <blocks>
            <salesextend>
                <class>Abc_Salesextend_Block</class>   
            </salesextend>  

            <adminhtml>
                <rewrite>
                    <sales_order_grid>Abc_Salesextend_Block_Sales_Order_Grid</sales_order_grid>
                </rewrite>                
            </adminhtml>    
        </blocks>

        <models>
            <salesextend>
                <class>Abc_Salesextend_Model</class>   
                <resourceModel>salesextend_resource</resourceModel> 
            </salesextend>

            <salesextend_resource>
                <class>Abc_Salesextend_Model_Resource</class>
            </salesextend_resource>

            <!-- HERE is i am trying to override-->

            <sales_resource>
                <rewrite>

                    <order_collection>Abc_Salesextend_Model_Resource_Order_Collection</order_collection>

                </rewrite>                
            </sales_resource>    
        </models>
    </global>

</config>

即使我放错了自定义类名,它也不会给我任何错误。所以它没有找到我的自定义类。

请帮忙

2 个答案:

答案 0 :(得分:0)

我不太确定重写失败的原因。重写定义看起来很好。该错误只能与用于重写的错误类,缓存问题(config.xml缓存)或模块未激活有关。

我想你只想操纵集合,而不是重写,你应该使用一些事件/观察者技术。

/**
 * 
 * Sales order grid collection
 * @param unknown_type $observer
 */
public function salesOrderGridCollectionLoadBefore($observer){
        $collection = $observer->getOrderGridCollection();
        $select = $collection->getSelect();
                $select->DO_WHATEVER_YOU_WANT...
}

并且此方法由以下方式触发:

        <events>
           <sales_order_grid_collection_load_before>
              <observers>
                  <cartware_modify_grid_adminhtml_collection>
                      <model>your_module/observer_block</model>
                      <method>salesOrderGridCollectionLoadBefore</method>
                  </cartware_modify_grid_adminhtml_collection>
              </observers>
          </sales_order_grid_collection_load_before>
    </events>
</adminhtml>   
祝你好运!

答案 1 :(得分:-1)

<sales>
                <rewrite>

                    <resource_order_collection>Abc_Salesextend_Model_YOURFILENAME</resource_order_collection>

                </rewrite>                
            </sales>

只需在YOURFILENAME中替换你的文件名,它就有效......