我的Magento 1.9.0.1网站出现问题,其中Mage :: getModel('core / email_template')返回一个空对象,这意味着一切都无法正常工作(例如创建订单,订单所在被发送给客户,添加评论等...)。
例如,我经常看到以下错误:
Fatal error: Call to a member function addBcc() on a non-object in /home/website/public_html/app/code/core/Mage/Core/Model/Email/Template/Mailer.php on line 69
做一些侦探工作,我发现:
$emailTemplate = Mage::getModel('core/email_template');
返回false,因此给出了上述错误。
它可能是导致问题的插件吗? Mage::getModel('core/email_template')
是否以某种方式从其他地方加载模型,而不是预期的/home/website/public_html/app/code/core/Mage/Core/Model/Email/Template.php
?
提前致谢!
答案 0 :(得分:1)
Mage::getModel('core/email_template')
不应该返回false,所以它可能确实被其他模块覆盖了
要找出哪个模块负责,请在config.xml
文件中查找此代码段:
<global>
<models>
<core>
<rewrite>
<email_template>Namespace_Module_Model_Email_Template</email_template>
</rewrite>
</core>
</models>
</global>
请注意,Namespace_Module_Model_Email_Template
会有所不同,Namespace
将成为模块的名称空间,Module
将成为模块的名称以及Model
之后的名称可以是完全不同的。此外,我在代码段中放置的标签之间可能还有其他一些标签
找到它的最简单方法是在<email_template>
文件中查找字符串config.xml
。
一旦你发现哪个模块负责,你/我们将不得不调查覆盖核心模块的类来解决问题。
答案 1 :(得分:0)
我刚刚遇到了与我正在处理的事情完全相同的错误。问题(对我而言)是我的Namespace_Module_Model_Email_Template
文件存在,但是该类没有用相同的名称声明(它是AnotherNamespace_Module_Model_Email_Template
行)。奇怪的是,即使您禁用了模块,它也不适合您,但可能会打开它们并确保声明的类名与<email_template>
部分中的任何内容相匹配。
答案 2 :(得分:0)
我会一步一步地调试你的问题:
在更改代码时使用版本控制(例如,Git) 如果您需要,可以轻松撤消更改。
清除Magento缓存,删除/ var / cache /
中的所有内容清除浏览器缓存。
开启日志记录:使用“管理员”面板,转到
系统&gt;配置&gt;开发人员&gt;日志设置,然后选择“是”
启用选项。将在var / log中创建两个文件
文件夹(注意:我认为你已经开启了日志记录,但我不是
确定你做了......只是提到这个以防万一你没有。)
安装PHP IDE,然后安装Xdebug调试器并确认
$ emailTemplate是false。考虑到我们正在谈论的问题
/app/code/core/Mage/Core/Model/Email/Template/Mailer.php(第69行)
它调用了定义为
的addBcc()
/app/code/core/Mage/Core/Model/Email/Template.php(第538行)。
禁用模块:阅读https://magento.stackexchange.com/a/429/13421
它说“禁用本地模块”。我会禁用AW_Customsmtp
首先检查是否出现错误。如果没有,请启用它,禁用
Moogento_Pickpack并再次检查。如果未出现错误,请禁用
两者并再次检查。