【问题标题】:Why does a "on a non-object" error occurs with this extension in Magento?为什么 Magento 中的此扩展会出现“在非对象上”错误?
【发布时间】:2014-09-23 21:17:34
【问题描述】:

我在 Magento CE 1.6.2.0 中遇到博客扩展问题。

  1. 我安装了这个扩展:Neotheme_nBlog

  2. 我在管理员中创建了一个条目。

  3. 然后我去http://www.example.com/index.php/blog/查看最近创建的条目。

  4. 我看到的是这样的错误:

    致命错误:在非对象上调用成员函数 getName() 在/home/example.com/public_html/app/design/frontend/default/caramel/template/magicat/left.phtml

  5. 我在 google 中搜索了以下术语:"template/magicat/left.phtml" getName,我只发现有这个问题的网站,但根本不支持。

请注意:我知道这个错误在 PHP 中是什么意思(“很遗憾”,我对此并不陌生)。我不明白这种 [NON/null] 对象发生了什么以及如何在不杀死十几只小猫的情况下修复它

问题:我能做些什么来解决它?关于 Magento,错误的性质是什么?(再次:不是 PHP)。

注意事项:Magento 网站 (http://magento.stackexchange.com) 在提供这种性质的支持方面有些差劲和严格,所以询问是否有没有一个选项。

编辑(作为评论和澄清的答案):

  • Neotheme 仍未响应请求。
  • 不知道我应该在此类文件中查看什么(实例未在此处初始化,但仅被访问)。
  • 我正在使用 default 主题(焦糖色),它具有美学上的变化(没有布局变化)。

【问题讨论】:

  • 从管理中清除缓存并重新编译(如果使用编译)。你能用默认的 Magento 主题重现问题吗?您是否查看过提到的文件以了解发生了什么?您是否尝试过联系“Neotheme”,看看他们是否也能提供帮助?
  • 这只是发生在我身上现在。它发生在好几个小时之前。还没有得到 neotheme 的任何支持。我没有使用编译(在 Magento CE 中使用编译会使每个扩展都中断 - 所以为了能够安装扩展并且不再出现任何 Class Not Found 错误,我禁用了编译)。我如何“查看提到的文件”?它只尝试访问一个变量(视图中不进行块实例化)
  • 而且我无法使用默认主题重新创建问题,因为默认主题是焦糖,并且此发行版的前开发人员杀死了疯狂的猫(他们没有改变布局。 xml 文件,不过)- 我实际上使用的是“焦糖”,它没有焦糖的美感

标签: magento


【解决方案1】:

没有具体看你的系统很难说,但是在这个

template/magicat/left.phtml

您似乎已通过扩展或自定义开发将名为 magicat/left.phtml 的模板添加到您的系统中。在这个文件的某个地方,PHP 在一个非对象上调用了getName。发生这种情况的原因有很多,如果没有看到 PHP 在您的系统中抱怨的特定代码行,很难说。了解magicat 是扩展程序的一部分还是其他内容也会很有帮助。

模板中出现此错误的最常见原因是代码依赖于已被另一个扩展删除的块(通过布局 XML 或观察者方法)

$this->getLayout()->getBlock('some_block')->getName();

下一个最常见的是人们使用注册表在模板和视图之间进行通信,但未设置注册表项

Mage::registry('some_item')->getName();

在不知道变量和上下文的情况下,任何人都无法帮助您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 2021-08-04
    • 2016-06-10
    • 2020-01-30
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多