0

私のモジュールの 1 つで、クラス Mage_Sales_Model_Quote_Address_Total_Subtotal を書き直そうとしています。以前はモデルを書き直していましたが、問題ありません。抽象クラスは書き換えられないことを理解しています。しかし、これは、私は立ち往生しています...

私の目的は、保護された関数 _initItem($address, $item) を書き直すことです。私は失敗し、すべての関数を書き直そうとしました (parent:: を祖父母クラスに置き換えました)。もう運はありません。

ここに私の設定があります:

<!-- in app/code/local/Mynamespace/Mymodule/etc/config.xml -->
<?xml version="1.0"?>
<config>
<global>
    <models>
        <sales_quote>
            <rewrite>
                <address_total_subtotal>Mynamespace_Mymodule_Model_Sales_Quote_Address_Total_Subtotal</address_total_subtotal>
            </rewrite>
        </sales_quote>
    </models>
</global>
</config> 

そして私のクラス:

# in app/code/local/Mynamespace/Mymodule/Model/Sales/Quote/Address/Total/Subtotal.php
class Mynamespace_Mymodule_Model_Sales_Quote_Address_Total_Subtotal extends Mage_Sales_Model_Quote_Address_Total_Subtotal
{
protected function _initItem($address, $item)
{
    Mage::log("rewrite");
}
}

誰でもそれで私を助けることができますか? これまでの抽象クラスと同じ問題のようです。

4

1 に答える 1

1

オーバーライドするモデルのエイリアスは でありsales、 ではありませんsales_quote。これを試して:

    <models>
        <sales>
            <rewrite>
                <quote_address_total_subtotal>Mynamespace_Mymodule_Model_Sales_Quote_Address_Total_Subtotal</quote_address_total_subtotal>
            </rewrite>
        </sales>
    </models>
于 2013-10-08T07:59:28.687 に答える