Magento 重写核心模型资源集合

Posted

技术标签:

【中文标题】Magento 重写核心模型资源集合【英文标题】:Magento rewrite core model resource collection 【发布时间】:2013-04-01 03:42:06 【问题描述】:

我正在尝试重写 Mage_Review_Model_Resource_Review_Summary_Collection。 模块被激活。 折叠结构与核心审查中的相同。

问题应该出在xml中。

我的 xml 是:

<?xml version="1.0"?>
<config>
<modules>
    <LM_Review>
        <version>0.1.0</version>
    </LM_Review>
</modules>

<frontend>
    <routers>
        <review>
            <args>
                <modules>
                    <lm_review before="Mage_Review">LM_Review</lm_review>
                </modules>
            </args>
        </review>
    </routers>

    <layout>
        <updates>
            <lm_review>
                <file>lm/review.xml</file>
            </lm_review>
        </updates>
    </layout>

    <translate>
        <modules>
            <LM_Review>
                <files>
                    <default>LM_Review.csv</default>
                </files>
            </LM_Review>
        </modules>
    </translate>
</frontend>

<global>
    <models>
        <review_resource>
            <rewrite>
                <review_summary_collection>LM_Review_Model_Resource_Review_Summary_Collection</review_summary_collection>
            </rewrite>
        </review_resource>
    </models>
</global>
</config>

等/模块中的LM_All.xml

<LM_Review>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Review />
            </depends>
</LM_Review>

app/code/local/LM/Review/Model/Resource/Review/Summary/Collection.php 中的 Collection.php

class LM_Review_Model_Resource_Review_Summary_Collection extends Mage_Review_Model_Resource_Review_Summary_Collection 

   public function addStoreFilter($storeId) 
      die('test');
   


【问题讨论】:

你面临什么样的问题? 重写不起作用。我无法用这个 xml 扩展核心类 【参考方案1】:

我发现了问题。它需要将资源模型添加到 xml 中,而不仅仅是重写它。

<global>
    <models>
        <review>
            <resourceModel>review_resource</resourceModel>
        </review>
        <review_resource>
            <rewrite>
                <review_summary_collection>LM_Review_Model_Resource_Review_Summary_Collection</review_summary_collection>
            </rewrite>
        </review_resource>
    </models>
</global>

【讨论】:

我不明白为什么这应该是必需的。在我的特殊情况下,我在 etc/config.xml 中有错字,所以 xml 不再有效【参考方案2】:

您的 XML 是正确的。有了上面的 XML,如果你调用工厂方法

Mage::getResourceModel('review/review_summary_collection') 

Magento 将尝试实例化一个

LM_Review_Model_Resource_Review_Summary_Collection

意思是

    Magento 看不到你的模块(没有app/etc/module 文件,或者文件处于非活动状态,或者文件指向错误的代码池)

    您的代码池中没有位于LM/Review/Model/Resource/Review/Summary/Collection.php 的文件

    Collection.php中定义的类不是LM_Review_Model_Resource_Review_Summary_Collection

    Collection.php 中定义的类没有扩展 Mage_Review_Model_Resource_Review_Summary_Collection

    检查类名和路径名的拼写和大小写。这对 Magento 很重要。

【讨论】:

感谢您的评论。我已经检查了拼写和类似的东西。 moule 被激活。模块中还有一个控制器正在工作。我还重建了相同的文件夹结构及其扩展核心类。它不是我的第一个模型重写,而是我的第一个资源模型重写,我看不出它有什么问题。我还安装了 Firegento,它还说重写有问题,但没有细节。 @exe echo get_class(Mage::getResourceModel('review/review_summary_collection')); 谁知道它已经被其他模块覆盖了 已经 testet -> Mage_Review_Model_Resource_Review_Summary_Collection 它没有覆盖我的其他东西。还用更多信息更新了第一篇文章 @exe -- 这是一个具有工作重写的模块。差异与您的差异。 alanstorm.com/2013/projects/LM_Review.tar.gz 谢谢,但我发现了问题并在您的回答前几个小时发布了它,我已经检查过了,我认为它对我有用。不过非常感谢

以上是关于Magento 重写核心模型资源集合的主要内容,如果未能解决你的问题,请参考以下文章

magento重写资源类型的models

如何重写magento core-cache-model (Mage_Core_Model_Cache)

Magento模型集合addFieldToFilter常用过滤条件

深入理解Magento - 第六章 - 高级Magento模型

如何在 Magento 2.3 中加入两个自定义表

– 高级Magento模型