许多扩展(包括我写的那个)包含一个助手类,它只是扩展抽象基类而不添加任何功能。助手通常看起来像这样:
class MyCompany_MyModule_Helper_Data extends Mage_Core_Helper_Abstract {
}
因此扩展类仅用于抽象类提供的内容,尤其是用于翻译。另一方面,Magento中的所有Block和Controller类都继承了__()
方法进行翻译 - 在我正在开发的扩展中,我甚至不需要调用助手类。
我可以删除帮助程序类并将其从config.xml
中删除吗?我已经尝试过了,并且扩展似乎没有正常工作,但是由于Magento的复杂性,我总是有点担心会有一些我不知道的含义。
答案 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
{
}
然后可能仍会受到影响的一些事情是:
因此,如果您的助手为空,没有系统配置部分且没有翻译,那么“删除”也可以。