我正在学习按照本教程http://www.pierrefay.fr/category/developpement/magento
创建自定义扩展程序当我尝试打开扩展程序管理员时,我得到Fatal error: Class 'Mage_Test_Helper_Data' not found in /var/www/html/dev/app/Mage.php on line 520
但我认为我在扩展程序中的任何地方都没有使用帮助程序。欢迎您提出建议。
这是我的config.xml文件
<?xml version="1.0"?>
<config>
<modules>
<Package_Test>
<version>1.0.0</version>
</Package_Test>
</modules>
<frontend>
<routers>
<routerfrontend>
<use>standard</use>
<args>
<module>Package_Test</module>
<frontName>test</frontName>
</args>
</routerfrontend>
</routers>
<layout>
<updates>
<test>
<file>test.xml</file>
</test>
</updates>
</layout>
</frontend>
<admin>
<routers>
<test>
<use>admin</use>
<args>
<module>Package_Test</module>
<frontName>admintest</frontName>
</args>
</test>
</routers>
</admin>
<adminhtml>
<layout>
<updates>
<test>
<file>test.xml</file>
</test>
</updates>
</layout>
<menu>
<test translate="title" module="adminhtml">
<title>My Module</title>
<sort_order>100</sort_order>
<children>
<items module="Test">
<title>Address Book</title>
<action>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>
答案 0 :(得分:25)
如果您已启用编译,请在“系统”,“工具”,“编译”中尝试禁用或重新编译。
如果您无法进入管理界面但具有SSH访问权限,则可以使用以下命令禁用它:
php -f shell/compiler.php -- disable
php -f shell/compiler.php -- clear
php -f shell/compiler.php -- state
最终输出应如下所示:
Compiler Status: Disabled
Compilation State: Not Compiled
Collected Files Count: 0
Compiled Scopes Count: 0
答案 1 :(得分:15)
即使你自己不使用助手,Magento管理员也可以。这就是为什么你应该总是在你的扩展中包含数据助手。所以Helper / Data.php中的以下代码
class Package_Test_Helper_Data extends Mage_Core_Helper_Abstract
{
}
和
<global>
<helpers>
<test>
<class>Package_Test_Helper</class>
</test>
</helpers>
</global>
你的config.xml中的就足够了。
答案 2 :(得分:4)
要扩展@ alexei-yerofeyev的答案,有几个地方可以咬你。
假设您定义了这样的帮助:
<helpers>
<package_test>
<class>Package_Test_Helper</class>
</package_test>
</helpers>
您可以创建如下的电子邮件模板:
<template>
<email>
<test_email module="package_test">
<label>Test Email</label>
<file>package/test_email.html</file>
<type>html</type>
</test_submission>
</email>
</template>
在这种情况下,<package_test>
和module="package_test"
需要与完全匹配 ,包括大写。
使用助手的代码也是如此:
Mage::helper('package_test')->something();
虽然这通常采用[package]_[module]
格式,但情况并非总是如此。您可能会遇到一个模块Company_Widget
,其中包含一个名为cmp_widg
的帮助程序,您需要匹配该帮助程序名称。
答案 3 :(得分:2)
如果您添加扩展程序并遇到同样的问题,则只需手动清除缓存文件夹,因为管理员不允许进入。我遇到了同样的问题然后我这样做了。该错误已被删除。这就是缓存错误。
答案 4 :(得分:1)
首先,您需要删除var / cache中的“cache”文件夹。
删除后转到magento根文件夹并打开index.php并替换代码
找到这段代码
/**
* Compilation includes configuration file
*/
define('MAGENTO_ROOT', getcwd());
$compilerConfig = MAGENTO_ROOT . '/includes/config.php';
if (file_exists($compilerConfig)){
include $compilerConfig;
}
替换为此代码
/**
* Compilation includes configuration file<br />
*/
define('MAGENTO_ROOT', getcwd());<br />
/*
$compilerConfig = MAGENTO_ROOT . '/includes/config.php';
if (file_exists($compilerConfig)){
include $compilerConfig;<br />
}
*/
最后刷新你的Magento管理页面..
感谢您阅读....我希望这个答案对您有所帮助。
答案 5 :(得分:0)
检查Block / Adminhtml文件中的帮助程序调用...可能是在那里调用错误的帮助程序。
答案 6 :(得分:0)
我遇到了同样的问题。这真的很奇怪,因为它实际上发生在生产的克隆上。最后,我可以将问题追踪到权限问题。更改所有权限以递归方式修复它:
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 {} \;
从here获得权限命令。祝你好运!