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