如何在Magento中覆盖camelCased模型文件?

时间:2013-07-11 14:03:16

标签: magento magento-1.7

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

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

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

感谢任何帮助。

1 个答案:

答案 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来处理所有排列。