1

重写一个已经在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>

这有什么问题

4

1 回答 1

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 :

公司档案:

class CompanyA_ModuleA_Model_Adminhtml_Session extends Mage_Adminhtml_Model_Session {

CompanyB 模型 php 文件:

class CompanyB_ModuleB_Model_Adminhtml_Session extends CompanyA_ModuleA_Model_Adminhtml_Session {

最后一件事,为了确保重写以良好的顺序完成(当Mage::getModel('adminhtml/session')您想要检索 CompanyB 类而不是 COmpanyA 类时),您需要定义哪个模块取决于哪个模块。你在app/etc/modules/Company_Module.xml文件中这样做。

为 A 公司添加:

<depends>
    <Mage_Adminhtml />
</depends>

为 B 公司添加:

<depends>
    <CompanyA_ModuleA />
</depends>
于 2012-11-21T20:49:55.777 回答