0

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>

間違ったカスタム クラス名を配置しても、エラーは発生しません。そのため、カスタム クラスが見つかりません。

助けてください

4

2 に答える 2

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>   

幸運を!

于 2013-08-12T06:04:19.580 に答える