重写已经在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>
这个
有什么问题答案 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>