如果覆盖另一个模块使用的模块中的类会发生什么

时间:2014-05-27 11:38:51

标签: php magento override

我正在处理模块,我需要覆盖一个块文件才能添加新功能。我知道如何覆盖模型控制器但我想知道如果我扩展的类是什么会发生什么被另一个模块类使用?

以上情况如下:
在我的模块 config.xml 中,我将块文件重写为:

<blocks>
    <checkout>
        <rewrite>
            <cart_shipping>Company_Module_Block_Cart_Shipping</cart_shipping>
        </rewrite>
    </checkout>
</blocks>

并覆盖方法getEstimateRates()

但是另一个模块的块文件扩展为Mage_Checkout_Block_Cart_Shipping。我的问题是 -

  

&#34;该类是否能够在我的模块中看到在重写类中所做的更改?&#34;

OR

  

&#34;我是否必须覆盖其他模块块文件?&#34;

2 个答案:

答案 0 :(得分:1)

您的一个或另一个扩展块将无效。可以通过从其中一个扩展您的或其他块来修复它。

例如Company_Module_Block_Cart_Shipping是您的块,Other_Module_Block_Cart_Shipping是其他块。

如果Other_Module_Block_Cart_Shipping从核心延伸,则必须从Company_Module_Block_Cart_Shipping

延长Other_Module_Block_Cart_Shipping

答案 1 :(得分:0)

Magento为已启用模块的所有config.xml创建了一个config.xml树。

首先加载Mage_All.xml, 然后全部 法师。*。xml的 并按照字母顺序在其前面添加自定义模块.xml。

如果在etc / modules / module definition xml中给出了depends标记,则可以更改序列。

希望这可以解除你的怀疑。