It is pretty common magento error. Even if you yourself don’t use helper, Magento admin does. You should always create helper class in your custom module. File location depends on module code pool and could be located in
[magento_root]/app/code/local/[company]/[module]/helper/Data.php
or
[magento_root]/app/code/community/[company]/[module]/helper/Data.php
Sample file content:
<?php class Company_Module_Helper_Data extends Mage_Core_Helper_Abstract { }
Besides creating the Company_Module_Helper_Data class, you need to add class mapping to your config.xml
<config> ... <global> <helpers> <module> <class>Company_Module_Helper</class> </module> </helpers> </global> ... </config>
If you have created Data.php and has class mapping in config.xml, try following:
1. Clear cache ( System > Cache management
)
2. If you are using compilation, disable it or run recompile ( System > Tools > Compilation
)
What is going on under the hood ?
adminhtml.xml or system.xml could contain such line(s)
<xmlnode translate="title" module="module"> ... </xmlnode>
Magento passes the module
argument to the Mage::helper()
factory method.
Mage::helper('module');
Factory method looking for the class prefix to use in the node global/helpers/module/class. If helper part of config is missing, magento tries to load one from core codepool by prefixing the class id with mage_
and appending _helper
.
As a result class prefix = mage_module_helper
and it resolves to mage_module_helper_data
. And autoloader tries to load Mage/Module/Helper/Data.php