关于xml:Magento帮助程序类未找到错误

Magento Helper Class Not Found Error

我正在学习根据本教程创建自定义扩展,http://www.pierrefay.fr/category/developement/magento

当我试图打开扩展管理时,我得到了Fatal error: Class 'Mage_Test_Helper_Data' not found in /var/www/html/dev/app/Mage.php on line 520

但是我想我不会在扩展中的任何地方使用助手类,欢迎您的建议。

这是我的config.xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?xml version="1.0"?>
<config>
    <modules>
        <Package_Test>
            <version>1.0.0</version>
        </Package_Test>
    </modules>
    <frontend>
        <routers>
            <routerfrontend>
                <use>standard</use>
               
                    <module>Package_Test</module>
                    <frontName>test</frontName>
                </args>
            </routerfrontend>
        </routers>
        <layout>
            <updates>
                <test>
                    <file>test.xml</file>
                </test>
            </updates>
        </layout>    
    </frontend>
     
        <routers>
            <test>  
                <use>admin</use>
               
                    <module>Package_Test</module>
                    <frontName>admintest</frontName>
                </args>
            </test>
        </routers>
    </admin>
   
        <layout>
            <updates>
                <test>
                    <file>test.xml</file>
                </test>
            </updates>
        </layout>
        <menu>
        <test translate="title" module="adminhtml">
            My Module
            <sort_order>100</sort_order>
            <children>
                <items module="Test">
                    Address Book
                    admintest/adminhtml_index</action>
                </items>
            </children>
        </test>
        </menu>
    </adminhtml>
    <global>
         <helpers>
            <class>Package_Test_Helper</class>
         </helpers>
        <blocks>
            <test>
                <class>Package_Test_Block</class>
            </test>
        </blocks>
        <models>
            <test>
                <class>Package_Test_Model</class>
                <resourceModel>test_mysql4</resourceModel>
            </test>
            <test_mysql4>
                <class>Package_Test_Model_Mysql4</class>
                <entities>
                    <test>
                        <table>package_test</table>
                    </test>
                </entities>
            </test_mysql4>
        </models>
        <resources>
            <test_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </test_write>
            <test_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </test_read>
        </resources>
    </global>
</config>


如果启用了编译,请尝试在系统、工具、编译中禁用或重新编译。

如果您无法进入管理界面,但具有ssh访问权限,则可以通过以下方式禁用该界面:

1
2
3
php -f shell/compiler.php -- disable
php -f shell/compiler.php -- clear
php -f shell/compiler.php -- state

最终输出应如下所示:

1
2
3
4
Compiler Status:          Disabled
Compilation State:        Not Compiled
Collected Files Count:    0
Compiled Scopes Count:    0


即使你自己不使用助手,Magento管理员也会使用。这就是为什么在扩展中应该始终包含数据助手的原因。所以下面的代码在helper/data.php中

1
2
3
4
class Package_Test_Helper_Data extends Mage_Core_Helper_Abstract
{

}

1
2
3
4
5
6
7
<global>
    <helpers>
        <test>
            <class>Package_Test_Helper</class>
        </test>
    </helpers>
</global>

在config.xml中应该足够了。


为了扩展@alexei yerofeyev的答案,这里有一些地方可以咬你。

假设您这样定义助手:

1
2
3
4
5
<helpers>
    <package_test>
        <class>Package_Test_Helper</class>
    </package_test>
</helpers>

您可以创建这样的电子邮件模板:

1
2
3
4
5
6
7
8
9
<template>
   
        <test_email module="package_test">
            <label>Test Email</label>
            <file>package/test_email.html</file>
            <type>html</type>
        </test_submission>
    </email>
</template>

在这种情况下,module="package_test"需要精确匹配,包括资本化。

使用助手的代码也是如此,比如:

1
Mage::helper('package_test')->something();

虽然这通常采用[package]_[module]格式,但情况并非总是如此。您可能会遇到一个模块Company_Widget和一个名为cmp_widg的助手,您需要匹配该助手的名称。


如果您添加了一个扩展名,并且面临同样的问题,那么只需手动清除缓存文件夹,因为管理员不允许进入。我也面临同样的问题,然后我做了这个。错误已被删除。这就是缓存错误。


首先,您需要删除var/cache中的"cache"文件夹….

删除后,转到magento根文件夹,打开index.php并替换代码。

查找此代码

1
2
3
4
5
6
7
8
/**
  * Compilation includes configuration file
  */
  define('MAGENTO_ROOT', getcwd());
  $compilerConfig = MAGENTO_ROOT . '/includes/config.php';
  if (file_exists($compilerConfig)){
    include $compilerConfig;
  }

替换为此代码

1
2
3
4
5
6
7
8
9
10
 /**
   * Compilation includes configuration file<br />
   */
   define('MAGENTO_ROOT', getcwd());<br />
   /*
    $compilerConfig = MAGENTO_ROOT . '/includes/config.php';
    if (file_exists($compilerConfig)){
      include $compilerConfig;<br />
    }
   */

最后刷新您的magento管理页面。

谢谢你的阅读……我希望这个答案对你有帮助。


我也遇到了同样的问题。这真的很奇怪,因为它实际上发生在一个复制品上。最后,我可以把这个问题追溯到许可问题上。更改所有权限以递归方式修复它:

1
2
3
4
5
To change all the directories to 755 (-rwxr-xr-x):
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

To change all the files to 644 (-rw-r--r--):
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;

从这里获取权限命令。祝你好运!


检查block/adminhtml文件中的helper调用…可能里面有什么东西叫错了帮手。