Magento 助手目录结构

Magento Helper Directory Structure

我有一个自定义模块,一切正常。我正在向模块添加管理面板部分,并且想要一个单独的管理助手。我知道我可以像这样创建和调用我的管理员助手:

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');

但这不起作用。

是否可以在辅助目录子目录中为我的模块添加第二个辅助程序?如果可以的话,有人能给我指出正确的方向吗?

感谢您的帮助!

您的方法看起来不错而且完全正确。 config.xml 你只有一个错误。您应该将节点命名为 <helpers> 而不是 <helper>

是的,可以这样做,但我认为您有一些错别字。我能够使用您的方法注册一个新的助手,设置如下:

<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 看起来像这样:

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

而且我能够使用以下语法调用它:

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

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