我有一个自定义模块,一切正常。我正在向模块添加和管理面板部分,并希望有一个单独的管理员帮助器。我知道我可以创建并调用我的管理员帮助器:
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');
但这不起作用。
是否可以在帮助程序目录子目录中为我的模块安装第二个帮助程序?如果是这样,有人会指出我正确的方向。
感谢您的帮助!
答案 0 :(得分: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
。
答案 1 :(得分:0)
你的方法看起来很好,绝对正确。 config.xml中只有一个错误。您应该将节点<helpers>
命名为<helper>