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,它还说重写有问题,但没有细节。 @exeecho 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 core-cache-model (Mage_Core_Model_Cache)
Magento模型集合addFieldToFilter常用过滤条件