Magento - 重写层次结构

时间:2012-11-21 20:38:31

标签: magento

重写已经在magento中重写另一个类的类需要什么配置?

例如,有一个社区模块执行以下操作:

<models>
    <modulea>
        <adminhtml>
            <rewrite>
                <session>CompanyA_ModuleA_Model_Adminhtml_Session</session>
            </rewrite>
        </adminhtml>
    </modulea>
</models>

我想重写社区模块,我正在尝试以下不起作用的代码:

<models>
    <moduleb>
        <class>CompanyB_ModuleB_Model</class>
    </moduleb>
    <modulea>
            <rewrite>
                <adminhtml_session>CompanyB_ModuleB_Model_Adminhtml_Session</adminhtml_session>
            </rewrite>
    </modulea>
</models>

这个

有什么问题

1 个答案:

答案 0 :(得分:1)

请注意重写XML语法,否则会出错。它应该像:

<modulea>
        <adminhtml>
            <rewrite>
                <adminhtml_session>CompanyA_ModuleA_Model_Adminhtml_Session</session>
            </rewrite>
        </adminhtml>
    </modulea>

<moduleb>
        <adminhtml>
            <rewrite>
                <adminhtml_session>CompanyB_ModuleB_Model_Adminhtml_Session</session>
            </rewrite>
        </adminhtml>
    </moduleb>

接下来,您需要按顺序扩展Good PHP类。例如,如果您希望CompanyA扩展/重写CompanyB:

CompanyA档案:

class CompanyA_ModuleA_Model_Adminhtml_Session extends Mage_Adminhtml_Model_Session {

CompanyB Model php文件:

class CompanyB_ModuleB_Model_Adminhtml_Session extends CompanyA_ModuleA_Model_Adminhtml_Session {

最后,为了确保重写按顺序完成(当你想要检索CompanyB类而不是COmpanyA的Mage::getModel('adminhtml/session')时),你需要定义哪个模块依赖在哪。你可以在app/etc/modules/Company_Module.xml档案中这样做。

为公司A添加:

<depends>
    <Mage_Adminhtml />
</depends>

为公司B添加:

<depends>
    <CompanyA_ModuleA />
</depends>