【问题标题】:Can't override a core model in Magento无法覆盖 Magento 中的核心模型
【发布时间】:2010-07-16 12:33:32
【问题描述】:

我正在尝试覆盖 Mage_Catalog_Model_Layer_Filter_Category。 在 system.log 我收到警告:

警告:包含(Mycomp_Catalog_Model_Layer_Filter_Category.php):无法打开流:第 93 行的 /var/www/magento/includes/src/Varien_Autoload.php 中没有此类文件或目录 警告:include():无法在 /var 中打开 'Mycomp_Catalog_Model_Layer_Filter_Category.php' 以包含 (include_path='/var/www/magento/includes/src:.:/usr/share/php:/usr/share/pear') /www/magento/includes/src/Varien_Autoload.php 第 93 行

我做错了什么?

Mycomp/Catalog/etc/config.xml:

<?xml version="1.0"?>
<config>
<modules>
    <Mycomp_Catalog>
        <version>0.1.0</version>
    </Mycomp_Catalog>
</modules>
<global>
    <models>
        <catalog>
            <rewrite>                    
                <layer_filter_category>Mycomp_Catalog_Model_Layer_Filter_Category</layer_filter_category>
            </rewrite>
        </catalog>
    </models>
</global>

Mycomp/Catalog/Model/Layer/Filter/Category.php:

class Mycomp_Catalog_Model_Layer_Filter_Category extends  Mage_Catalog_Model_Layer_Filter_Category
{

} 

app/etc/modules/Mycomp_All.xml:

<?xml version="1.0"?>
<config>
  <modules>
     <Mycomp_Catalog>
       <codePool>local</codePool>
       <active>true</active>
     </Mycomp_Catalog>
  </modules>
 </config> 

【问题讨论】:

    标签: model magento overriding


    【解决方案1】:

    这里没有出现,那么您是否为 Mycomp_Catalog 模块设置了模型?像这样修改你的全局部分:

    <global>
        <models>
            <catalog>
                <rewrite>                    
                    <layer_filter_category>Mycomp_Catalog_Model_Layer_Filter_Category</layer_filter_category>
                </rewrite>
            </catalog>
            <mycompcatalog>
                <class>Mycomp_Catalog_Model</class>
            </mycompcatalog>
        </models>
    </global>
    

    这是我唯一的猜测。希望对您有所帮助!

    谢谢, 乔

    【讨论】:

    • 编辑以反映您不希望在组名 (mycomp_catalog) 中使用下划线,因为这会使 Magento 感到困惑。否则,当场。
    • 组名中的下划线很好,并且无论如何都不需要重写
    • 是的,从我所说的下划线开始,我用一些测试代码得出了错误的结论。
    • 为什么我需要 部分?我没有在有关覆盖核心模型的博客文章中看到它:inchoo.net/ecommerce/magento/…belanur.de/blog/2008/09/05/…
    • 谢谢!!由于我没有定义 mycompcatalog 类,所以它总是找不到文件...Magento 1.9.10
    【解决方案2】:

    这类问题很难通过论坛进行调试。这是一个具有工作覆盖的模块(至少,它适用于我的 1.4 CE 安装)将它与你的进行比较,看看有什么不同,或者只是尝试在你的安装中安装,如果它不起作用,你知道有一个其他地方的问题。

    http://alanstorm.com/testbed/Mycomp.tar.gz

    【讨论】:

    • 感谢您的帮助。我试过你的模块,我得到了同样的错误。当我删除 部分时,它可以工作。
    • 您的模块可以全新安装。我看到您评论了 部分,因此不需要它。我仍然不明白为什么您的模块在我以前的安装中不起作用。谢谢。
    • 我认为可能是这种情况(这就是我发布工作模块的原因)。您之前的安装 1. 安装了干扰事物的自定义模块或 2. 更改了干扰事物的核心或 lib 文件。使用差异工具比较这两个来源可以帮助您隔离发生的事情。您的自动加载尝试包含的文件(include(Mycomp_Catalog_Model_Layer_Filter_Category.php) 表明您的自动加载代码可能已被更改(include(Mycomp/Catalog/Model/Layer/Filter/Category.php 将是“正常”)
    猜你喜欢
    • 2012-02-16
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多