2012-12-22 43 views
6

許多擴展(包括我寫的)包含一個輔助類,它只是在不添加任何功能的情況下擴展抽象基類。助手通常是這樣的:所有Magento擴展都必須使用幫助類嗎?

class MyCompany_MyModule_Helper_Data extends Mage_Core_Helper_Abstract { 
} 

擴展類,因此只用於事物的抽象類提供,尤其是對翻譯。另一方面,Magento中的所有Block和Controller類繼承了用於翻譯的__()方法 - 並且在我正在開發的擴展中,我不需要調用輔助類甚至一次。

我可以直接刪除輔助類並將其從​​3210中刪除嗎?我試過了,擴展似乎沒有,但由於Magento的複雜性,我總是有點擔心,我有沒有意識到的影響。

回答

9

如果您是從頭開始創建模塊,那麼輔助類並不是絕對必要的。我通常會跳過創建一個,直到需要它。

但是,如果有任何XML文件使用module屬性來指定翻譯模塊,則該屬性需要解析爲有效的幫助程序。例如,在此核心文件中

<!-- File: app/code/core/Mage/Catalog/etc/system.xml --> 
<tabs> 
    <catalog translate="label" module="catalog"> 
     <label>Catalog</label> 
     <sort_order>200</sort_order> 
    </catalog> 
</tabs> 

module="catalog"。通過指定此屬性,轉換標籤Magento的系統代碼會是這個樣子

Mage::helper('catalog')->__('Label'); 

所以,從目錄模塊消除幫助將打破Magento的部分。

這個「幫手組翻譯」功能在Magento的XML文件中的許多,不只是system.xml(設計上使用(該單件類的別名catalog將自動Magento的系統代碼轉換爲Mage::helper('catalog/data'))小部件等)。此外,Magento中還有一些系統會推斷和/或要求存在翻譯輔助模塊(訪問控制,外部API系統等)。)

長話短說:如果您是從頭開始創建模塊,請隨時將幫助器放出,直到您開始發現Magento無法實例化幫助器的錯誤。切勿從模塊中刪除現有的幫手,如果您想確保自己與其他人可能做出的假設100%兼容,請始終包含Data.php輔助類。

4

Magento的Helper類包含實用程序方法,這些方法將允許您在對象和變量上執行常見任務。 http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-1-introduction-to-magento#6

假設幫助器文件是空的,沒有自定義方法,例如。

<?php 
class MagePal_SomeModule_Helper_Data extends Mage_Core_Helper_Abstract 
{ 
} 

然後一些可能仍然會受到影響的事情是:

  • 的system.xml - 在管理你的模塊黑屏 - >系統 - >配置
  • $此 - > __( 「」) - 錯誤的一個.phtml模板(國際化/翻譯)

所以,如果你的助手是空的,沒有系統配置部分,沒有翻譯,那麼它也許'OK刪除。

相關問題