所有Magento扩展都必须使用帮助程序类吗?

时间:2012-12-22 18:53:28

标签: magento magento-1.7

许多扩展(包括我写的那个)包含一个助手类,它只是扩展抽象基类而不添加任何功能。助手通常看起来像这样:

class MyCompany_MyModule_Helper_Data extends Mage_Core_Helper_Abstract {
}

因此扩展类仅用于抽象类提供的内容,尤其是用于翻译。另一方面,Magento中的所有Block和Controller类都继承了__()方法进行翻译 - 在我正在开发的扩展中,我甚至不需要调用助手类。

我可以删除帮助程序类并将其从config.xml中删除吗?我已经尝试过了,并且扩展似乎没有正常工作,但是由于Magento的复杂性,我总是有点担心会有一些我不知道的含义。

2 个答案:

答案 0 :(得分:10)

如果您从头开始创建模块,则不一定需要帮助程序类。我通常会跳过创建一个直到需要它为止。

,如果任何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的部分内容。

(单个部分类别名catalog由Magento系统代码自动转换为Mage::helper('catalog/data')

这个“组翻译助手”功能用于Magento的XML文件的很多,而不仅仅是system.xml(布局,小部件等)。此外,Magento中有一些系统会推断和/或要求存在用于翻译的辅助模块(访问控制,外部API系统等)

长话短说:如果您是从头开始创建模块,请随意离开帮助程序,直到您开始收到Magento无法实例化帮助程序的错误。永远不要从模块中删除现有的帮助程序,如果要确保与其他人可能做出的假设完全兼容,请始终包含Data.php帮助程序类。

答案 1 :(得分:4)

Magento的Helper类包含实用程序方法,允许您对对象和变量执行常见任务。 http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-1-introduction-to-magento#6

假设Helper文件为空,没有自定义方法,例如。

<?php 
class MagePal_SomeModule_Helper_Data extends Mage_Core_Helper_Abstract
{
}

然后可能仍会受到影响的一些事情是:

  • system.xml - admin中模块的空白屏幕 - &gt; system - &gt;配置
  • $ this-&gt; __('') - .phtml模板中的错误(国际化/翻译)

因此,如果您的助手为空,没有系统配置部分且没有翻译,那么“删除”也可以。