我有一个航运社区模型,有一个我想覆盖的驼峰类/文件女巫。
原始文件/类位于 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>
通常模型文件不是驼峰式的,所以我想它更容易。或者我在这里遗漏了什么?
感谢任何帮助。
答案 0 :(得分:5)
要在重写语法中使用的类组(<pedroteixeira_correios>
)取决于模块配置中的类组声明。
在重写语法中使用的类ID(<carrier_correiosMethod>
)完全取决于如何在代码中调用类。对于您的示例,以下将在区分大小写的文件系统上实例化原始类实例:
pedroteixeira_correios/carrier_correiosMethod
pedroteixeira_correios/Carrier_correiosMethod
pedroteixeira_correios/carrier_CorreiosMethod
pedroteixeira_correios/Carrier_CorreiosMethod
在不区分大小写的文件系统上,类ID部分的任何外壳组合都会产生模型实例。希望扩展供应商在代码/标记中指定其类时遵循一致的模式,但您可以使用上面的列表指定多个xpath来处理所有排列。