Magento Helper目录结构

时间:2015-02-06 15:08:15

标签: 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');

但这不起作用。

是否可以在帮助程序目录子目录中为我的模块安装第二个帮助程序?如果是这样,有人会指出我正确的方向。

感谢您的帮助!

2 个答案:

答案 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>