Magento:致命错误:在第546行的…/ app / Mage.php中找不到类'Mage_Giftcards_Helper_Data'


16

我已经安装了一个模块扩展,它引发致命错误

管理员中的“致命错误:在第546行的.... / app / Mage.php中找不到类'Mage_Giftcards_Helper_Data'”。

我推荐了这个链接/programming//a/9191286/2919940和这个链接/magento//a/7133/3693

但是我有

<global>
<helpers>
        <giftcards>
            <class>Webtex_Giftcards_Helper</class>
        </giftcards>
    </helpers>
</global>

在我config.xml和我这堂课上

class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}

/app/code/local/Webtex/Giftcards/Helper/Data.php路径声明。

我已禁用编译器,并通过创建空var/cache目录来清除缓存。

我发现到处config.xml应该定义帮助器类,而Data.php应该声明该帮助器类。

但就我而言,我都有他们两个,这是什么原因导致此错误?我也在新的magento安装上测试了该模块,

Magento版本是1.7.0.2

请提供此错误的帮助?如果类名冲突,我们该如何调试?

谢谢


让我知道您是否需要我的答复中的其他信息,或者是否有更新。
philwinkle 2013年

Answers:


20

当引用缺少的助手时,这很常见。在许多情况下,类名本身格式错误或您的短名称引用不正确,这就是Magento在路径中查找它的原因Mage_Giftcards_Helper_Data(请参见下面的示例1)。对于以下示例,我建立了一个名为的模块MyCompany_MyModule

这些只是您可以定义帮助器的许多方法中的一些:


不正确的帮助程序类别名:

我将我的助手称为:

$helper = Mage::helper('mycompany');

我得到错误:

Fatal error: Class 'Mage_Mycompany_Helper_Data' not found

什么地方出了错?

我的助手类别名定义为mymodule

<helpers>
    <mymodule>
        <class>MyCompany_MyModule_Helper</class>
    </mymodule>
</helpers>

更改我的简码以Mage::helper('mymodule')产生所需的结果。


类别名称格式错误

我引用了我的助手(这次是正确的):

$helper = Mage::helper('mymodule');

我收到:

Fatal error: Class 'MyCompany_MyModule_Helper_Data' not found

什么地方出了错?

我的课程定义缺少“ _Data”:

class MyCompany_MyModule_Helper extends Mage_Core_Helper_Abstract
{


}

帮手/自定义:

这类似于您尝试在未命名为“ Data.php”的文件中引用帮助程序类时发生的情况。

我将我的助手称为:

$helper = Mage::helper('custom');

我的模块帮助程序路径定义为:

<helpers>
    <mymodule>
        <class>MyCompany_MyModule_Helper</class>
    </mymodule>
</helpers>

我在app / code / local / MyCompany / MyModule / Helper / Custom.php中有一个类文件

我得到错误:

Fatal error: Class 'Mage_Custom_Helper_Data' not found

什么地方出了错?

您需要在特定模块中指定其他帮助程序类作为模块帮助程序的简称的子路径。这类似于块和模型的工作方式-但在最顶层没有子文件夹。

我通过这样引用Custom.php helper类文件来修复此错误:

$helper = Mage::helper('mymodule/custom');

检查以下链接,可能也是缺少帮助程序stackoverflow.com/questions/19590164/…
Neeraj Garg 2014年

4

这仅在您使用启用编译器安装扩展时发生,这是您必须做的

1步骤app / etc / module /您最近安装的模块禁用模块

2步骤登录到admin / system / tools编译器禁用编译器再次上传代码,它将正常工作,然后您可以再次编译代码

祝好运


1
  1. 确保Data.php文件位于您的

codepool/extension_name/module_name/Helper/Data.php

  1. 如果上述目录中存在的Data.php打开该文件并复制类名,则基本上具有Magento命名意义的类名如

packagename_modulename_foldername(帮助程序或块)_文件名(Data.php)

<?php

class package_module_Helper_Data{

}
  1. 移至magento根文件夹,并确保package_module_Helper_Data.php是否存在于

includes/src/

  1. 如果看不到,请在src目录下创建一个具有该名称(您输入错误)的php文件。
  2. 复制Data.php的内容并将其粘贴到新创建的文件中。我相信它将对您有帮助
  3. 仍然如果您遇到错误或magento没有显示任何有关扩展名的信息,只需在magento系统->工具->编译下禁用编译模式
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.