我正在尝试开发一个扩展,在Magento的Admin端添加一个表单,但由于某些原因,我似乎无法在安装我的模块时加载Magento Administration。我正处于开发的最初阶段,而且我遇到了一个在StackOverflow上多次报告的错误。不幸的是,在我的案例中,没有一个答案似乎有所帮助。
我得到的错误是*致命错误:在第546行的C:\ XAMPP \ htdocs \ magento \ app \ Mage.php中找不到类'Mage_Mycompany_Logviewer_Helper_Data'。这应该意味着Magento找不到辅助类,但它就在那里,它的名字与它正在寻找的名称相匹配(除了开头的“Mage_”,我从未在任何其他扩展中使用过)。
更新2012/07/29
登录Magento Admin后立即发生错误。当我点击“登录”时,我得到的只是一个错误页面,没有任何内容呈现。
这是我到目前为止所有文件的内容。
config.xml中
<?xml version="1.0"?>
<config>
<modules>
<Mycompany_Logviewer>
<version>0.1.0</version>
</Mycompany_Logviewer>
</modules>
<global>
<models>
<logviewer>
<class>Mycompany_Logviewer_Model</class>
</logviewer>
</models>
<blocks>
<logviewer>
<class>Mycompany_Logviewer_Block</class>
</logviewer>
</blocks>
<helpers>
<logviewer>
<class>Mycompany_Logviewer_Helper</class>
</logviewer>
</helpers>
</global>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<mycompany_logviewer after="Mage_Adminhtml">Mycompany_Logviewer_Adminhtml</mycompany_logviewer>
</modules>
</args>
</adminhtml>
</routers>
</admin>
<adminhtml>
<menu>
<mycompany translate="title" module="mycompany_logviewer">
<title>Mycompany</title>
<sort_order>90</sort_order>
<children>
<form translate="title" module="mycompany_logviewer">
<title>Form</title>
<sort_order>10</sort_order>
<action>adminhtml/logviewer</action>
</form>
</children>
</mycompany>
</menu>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<mycompany>
<title>Mycompany</title>
<sort_order>90</sort_order>
<children>
<form>
<title>Form</title>
<sort_order>10</sort_order>
</form>
</children>
</mycompany>
</children>
</admin>
</resources>
</acl>
</adminhtml>
</config>
Data.php(帮助者)
class Mycompany_Logviewer_Helper_Data extends Mage_Core_Helper_Abstract
{
}
LogviewerController.php(控制器)
class Mycompany_Logviewer_Adminhtml_LogviewerController extends Mage_Adminhtml_Controller_Action
{
/**
* View form action
*/
public function indexAction() {
$this->loadLayout();
$this->_setActiveMenu('Mycompany/form');
$this->_addBreadcrumb(Mage::helper('Mycompany_Logviewer')->__('Form'), Mage::helper('Mycompany_Logviewer')->__('Form'));
$this->renderLayout();
}
/**
* Check allow or not access to ths page
*
* @return bool - is allowed to access this menu
*/
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('Mycompany/form');
}
}
Mycompany_Logviewer.xml(配置文件)
<?xml version="1.0"?>
<config>
<modules>
<Mycompany_Logviewer>
<active>true</active>
<codePool>local</codePool>
</Mycompany_Logviewer>
</modules>
</config>
以上所有内容都是从example I found online复制的,我只是分别用 Mycompany 和 Logviewer 替换了命名空间和模块名称。我很确定这是我忘记的明显的东西,但我无法弄清楚它可能是什么。谢谢你的帮助。
答案 0 :(得分:4)
跳出来的第一件事是你正在注册一个名为Procedo_Logviewer
的模块 - 实际上它应该是Mycompany_Logviewer
所以,Mycompany_Logviewer.xml
应该如下:
<?xml version="1.0"?>
<config>
<modules>
<Mycompany_Logviewer>
<active>true</active>
<codePool>local</codePool>
</Mycompany_Logviewer>
</modules>
</config>
更改后清除缓存
修改强>
仔细查看您的控制器,我也可以看到您正在呼叫您的助手:
Mage::helper('Mycompany_Logviewer')
你应该这样打电话给你的助手:
Mage::helper('logviewer')
编辑2
config.xml中存在另一个问题
module="mycompany_logviewer"
应该是
module="logviewer"
这与您在xml中声明的辅助节点相关,即
<helpers>
<logviewer>
<class>Mycompany_Logviewer_Helper</class>
</logviewer>
</helpers>
答案 1 :(得分:2)
我有类似的问题。解决方案是将公司名称改为:
<helpers>
<Mycompany_Logviewer>
<class>Mycompany_Logviewer_Helper</class>
</Mycompany_Logviewer>
</helpers>
$myHelper= Mage::helper('Mycompany_Logviewer');