2015-02-06 61 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