【问题标题】:Magento: overriding Mage_CatalogSearch_Model_Resource_Helper_Mysql4Magento:覆盖 Mage_CatalogSearch_Model_Resource_Helper_Mysql4
【发布时间】:2013-11-02 21:45:31
【问题描述】:

我花了将近两天的时间在网上搜索有关此主题的信息,但我不知道为什么我的课程没有覆盖 Mage_CatalogSearch_Model_Resource_Helper_Mysql4 (core/Mage/CatalogSearch/Model/Resource/Helper/Mysql4.php)。

我的课是

class Company_Module_Model_Override_CatalogSearch_Resource_Helper_Mysql4 extends
    Mage_CatalogSearch_Model_Resource_Helper_Mysql4
{
}

文件位于 local/Company/Module/Model/Override/CatalogSearch/Resource/Helper/Mysql4.php

我的配置文件是:

<global>
    <models>
        <catalogsearch_resource_helper>
            <rewrite>
                    <mysql4>Company_Module_Model_Override_CatalogSearch_Resource_Helper_Mysql4</mysql4>
                </rewrite>
            </catalogsearch_resource_helper>
    </models>
</global>

该模块会毫无问题地覆盖其他模块,所以我不知道如何解决...有什么想法吗? 谢谢

【问题讨论】:

  • 好的,我解决了.. 扩展这个类的正确方法是: Company_Module_Model_Override_CatalogSearch_Resource_Helper_Mysql4

标签: php magento


【解决方案1】:

Enzo,不要做所有这些事情,只需从核心目录复制 Mysql.php app\code\core\Mage\CatalogSearch\Model\Resource\Helper 并将其粘贴到本地目录中 app\code\local\Mage\CatalogSearch\Model\Resource\Helper 并相应地修改您的代码

【讨论】:

  • 谢谢你,Ram,我知道这个技巧,但我不想这样做,因为我的目标是拥有一个不依赖于 Mage 文件的模块。无论如何,我解决了这个问题......这很简单,一旦我知道:)
  • 不要将核心文件复制到local codepool,除非它们是从未实例化的抽象类。我不认为是这种情况
  • @Marius,我同意你的看法。
【解决方案2】:

我在这里发布我想出的解决方案。 config.xml 文件中正确的覆盖声明应该如下:

<global>
    <models>
        <catalogsearch_resource>
            <rewrite>
                  <helper_mysql4>Company_Module_Model_Override_CatalogSearch_Resource_Helper_Mysql4</helpr_mysql4>
            </rewrite>
        </catalogsearch_resource>
    </models>
</global>

【讨论】:

    猜你喜欢
    • 2014-12-31
    • 1970-01-01
    • 2013-10-15
    • 2012-11-27
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多