【问题标题】:Rewrite a class in magento用magento重写一个类
【发布时间】:2014-01-13 10:28:16
【问题描述】:

我一直在尝试在 Magento 中重写一个类,并且我正在执行所有正确的程序,但是我没有得到。

我正在尝试重写 app\code\core\Mage\Catalog\Model\Product\Attribute\Media\Api.php

提前感谢任何可以帮助我的人。

<config>
    <modules>
        <Namespace_Catalog>
            <version>1.6.0.0.14</version>
        </Namespace_Catalog>
    </modules>
    <global>
        <models>
            <catalog>
                <rewrite>    
                    <product_attribute_media_api>Namespace_Catalog_Model_Product_Attribute_Media_Api</product_attribute_media_api>
                </rewrite>
            </catalog>
        </models>
    </global>
</config>

是的,我忘了说那部分 在 app/etc/modules/ 我有依赖标签。我已经尝试过使用和不使用标签依赖,但它从未奏效。我认为我真的做对了所有事情。

<?xml version="1.0"?>
<config>
<modules>
    <Namespace_Catalog>
        <active>true</active>
        <codePool>local</codePool>
        <depends>
            <Mage_Catalog />
        </depends>
    </Namespace_Catalog>
</modules>
</config>

在 app\code\local\Namespace\Catalog\Model\Product\Attribute\Media\Api.php 我有 类 Namespace_Catalog_Model_Product_Attribute_Media_Api 扩展了 Mage_Catalog_Model_Product_Attribute_Media_Api

我重写了函数remove,让它等于原来的,但是用Mage::log('rewrote', null, 'rewrote.log'),要知道他已经重写成功了。

我清除了缓存。

我更正了 codePool 标记以区分大小写。 我检查了 /var/log/ 并没有在 exception.log 和 system.log 中发现任何错误。 我的 Index.php 设置为开发人员模式和 ini_set('display_errors', 1);未注释。

我按照 Magento 的教程 here

这描述了您的 Magento 系统的状态。它列出了所有模块、模型、类、事件监听器或几乎任何你能想到的东西。例如,考虑您在上面创建的 config.xml 文件。如果您在浏览器中的 XML 文件中搜索文本 Namespace_Catalog_Model_Product_Attribute_Media_Api,您会发现您的类已列出。每个模块的 config.xml 文件都被 Magento 解析并包含在全局配置中。

这是我要写的课。好像没问题。我会错过什么?

<catalog>
    <class>Mage_Catalog_Model</class>
    <resourceModel>catalog_resource</resourceModel>
    <rewrite>
        <product_attribute_media_api>Namespace_Catalog_Model_Product_Attribute_Media_Api</product_attribute_media_api>
    </rewrite>
</catalog>

【问题讨论】:

  • 您的代码看起来不错。确保您清除了缓存。还要检查您的配置文件是否有效。有关错误,请参见 var/log。打开开发者模式以查看可能出现的任何错误。

标签: api class magento rewrite config


【解决方案1】:

您的代码似乎是正确的。 您是否在 app/etc/modules/ 中创建了 XML 文件?

应该是这样的:

命名空间_Catalog.xml

< ?xml version="1.0"?>
<config>
    <modules>
        <Namespace_Catalog>
            <active>true</active>
            <codepool>local</codepool>
        </Namespace_Catalog>
    </modules>
</config>

【讨论】:

    【解决方案2】:

    我想你错过了什么

     <version>1.6.0.0.14</version>
    

    应该与

    相同
    <?xml version="1.0"?>
    <config>
        <modules>
            <Namespace_Catalog>
                <active>true</active>
                <codepool>local</codepool>
                <version>1.6.0.0.14</version>
            </Namespace_Catalog>
        </modules>
    

    【讨论】:

      【解决方案3】:

      “代码池”区分大小写。

      试试:

      <codePool>local</codePool>
      

      而不是

      <codepool>local</codepool>
      

      【讨论】:

        猜你喜欢
        • 2011-07-18
        • 1970-01-01
        • 2013-04-08
        • 2015-05-14
        • 2015-12-08
        • 2012-07-30
        • 1970-01-01
        • 1970-01-01
        • 2013-08-16
        相关资源
        最近更新 更多