我有一个运输社区模型,其中有一个我想覆盖的驼峰类/文件女巫。
原始文件/类位于app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php下,我想覆盖该文件的方法或整个方法app/code/local/Esmart/CorreiosImprovements/Model/Carrier/CorreiosMethod.php下的类。
在原始模块配置文件中,我可以在config.xml中看到它的模型声明,如下所示:
<global>
...
<models>
<pedroteixeira_correios>
<class>PedroTeixeira_Correios_Model</class>
</pedroteixeira_correios>
</models>
...
<sales>
<shipping>
<carriers>
<pedroteixeira_correios>
<class>PedroTeixeira_Correios_Model_Carrier_CorreiosMethod</class>
</pedroteixeira_correios>
</carriers>
</shipping>
</sales>
</global>
在我的模块 config.xml 中,我以这种方式声明了覆盖:
<global>
<models>
<esmart_correiosimprovements>
<class>Esmart_CorreiosImprovements_Model</class>
</esmart_correiosimprovements>
<pedroteixeira_correios>
<rewrite>
<carrier_correiosMethod>Esmart_CorreiosImprovements_Model_Carrier_CorreiosMethod</carrier_correiosMethod>
</rewrite>
</pedroteixeira_correios>
</models>
</global>
通常模型文件不是驼峰格式的,所以我想这更容易。或者我在这里遗漏了什么?
感谢任何帮助。
最佳答案
重写语法中使用的类组 ( <pedroteixeira_correios>
) 取决于模块配置中的类组声明。
重写语法中使用的类 ID ( <carrier_correiosMethod>
) 完全取决于代码中调用类的方式。对于您的示例,以下内容都将在区分大小写文件系统上实例化原始类实例:
-
pedroteixeira_correios/carrier_correiosMethod
-
pedroteixeira_correios/Carrier_correiosMethod
-
pedroteixeira_correios/carrier_CorreiosMethod
-
pedroteixeira_correios/Carrier_CorreiosMethod
在不区分大小写的文件系统上,类 ID 部分的任何大小写组合都会生成模型实例。希望扩展供应商在代码/标记中指定其类时遵循一致的模式,但您可以使用上面的列表指定多个 xpath 来处理所有排列。
关于magento - 如何在 Magento 中覆盖驼峰命名模型文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17595513/