2015-02-06 63 views
0

我有一个自定义模块,一切工作正常。我正在向模块添加管理面板部分,并希望单独管理员帮助。我知道我可以创建并打电话给我的管理员帮手,像这样:Magento帮助目录结构

app/code/local/namespace/module/helper/Admin.php 

class Namespace_Module_Helper_Admin extends Mage_Core_Helper_Abstract.... 

$helper = Mage::helper('namespace_module/admin');  

而且一切都很好。

我真的很希望在结构我的管理助手是这样的:

app/code/local/namespace/module/helper/admin/Data.php 

但无法弄清楚如何设置了在config.xml文件中,然后调用帮手。

我最初的想法是建立这样的配置:

... 
<helper> 
    <namespace_module> 
     <class>Namespace_Module_Helper</class> 
    </namespace_module> 
    <namespace_module_admin> 
     <class>Namespace_Module_Admin_Helper</class> 
    </namespace_module_admin> 
</helper> 
... 

然后调用助手这样的:

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

但是,这是行不通的。

是否有可能在辅助目录的子目录中有我的模块的第二个助手?如果有的话可以有人指向正确的方向。

感谢您的帮助!

回答

1

是的,这是可能的,但我认为你有一些错别字。我可以用你的方法来注册一个新的帮手,像这样设置:

<helpers> 
    <namespace_module> 
     <class>Namespace_Module_Helper</class> 
    </namespace_module> 
    <namespace_module_admin> 
     <class>Namespace_Module_Helper_Admin</class> 
    </namespace_module_admin> 
</helpers> 

助手文件本身是在路径:app/code/local/Namespace/Module/Helper/Admin/Data.php

的辅助类看起来是这样的:

class Namespace_Module_Helper_Admin_Data extends Mage_Core_Helper_Abstract 
{ 
    public function test() 
    { 
     return 'test'; 
    } 
} 

我可以用语法调用它:

Mage::helper('namespace_module_admin')->test(); 

因此,您的问题可能是由于您的文件/类名称与Magento的自动加载器期望的位置不匹配造成的。例如,您的<class>Namespace_Module_Admin_Helper</class>应映射到(不正确的)目录app/code/local/Namespace/Module/Admin/Helper而不是预期的app/code/local/Namespace/Module/Helper/Admin

+0

没有错别字,但您的代码确实提供了解决方案。我将'Admin'放在类名的'Helper'之前,只要我将它移到config.xml和Helper/Admin/Data.php中,一切正常。 – shunut 2015-02-11 00:09:24

0

你的方法看起来很好,绝对正确。你在config.xml中只有一个错误。你应该节点<helpers>而不是<helper>

+0

不幸的是,这只是我的一个错字,在我的模块中,我正在使用''。随着一切设置如图所示,我得到这个错误:致命错误:类'Namespace_Module_Admin_Helper_Data'找不到在/files/app/Mage.php行546 – shunut 2015-02-09 13:47:35

+0

你确定你命名所有文件正确吗?我的意思是文件名和有效路径中的camelcase。 – 2015-02-09 20:02:59