2

我有一个航运社区模型,它有一个我想覆盖的驼峰类/文件女巫。

原始文件/类位于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>

通常模型文件不是驼峰式的,所以我想它更容易。或者我在这里错过了什么?

任何帮助表示赞赏。

4

1 回答 1

5

重写语法中使用的类组 ( <pedroteixeira_correios>) 取决于模块配置中的类组声明。

重写语法中使用的类 ID ( <carrier_correiosMethod>) 完全取决于代码中如何调用类。对于您的示例,以下内容都将在区分大小写的文件系统上实例化原始类实例:

  • pedroteixeira_correios/carrier_correiosMethod
  • pedroteixeira_correios/Carrier_correiosMethod
  • pedroteixeira_correios/carrier_CorreiosMethod
  • pedroteixeira_correios/Carrier_CorreiosMethod

在不区分大小写的文件系统上,类 ID 部分的任何大小写组合都会产生模型实例。希望扩展供应商在代码/标记中指定他们的类时遵循一致的模式,但是您可以使用上面的列表指定多个 xpath 来处理所有排列。

于 2013-07-11T16:25:18.747 回答