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

Lli*_*ian 7 magento magento-1.7

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

class MyCompany_MyModule_Helper_Data extends Mage_Core_Helper_Abstract {
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ala*_*orm 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>
Run Code Online (Sandbox Code Playgroud)

module="catalog".通过指定此属性,转换标签的Magento系统代码将如下所示

Mage::helper('catalog')->__('Label');
Run Code Online (Sandbox Code Playgroud)

因此,从目录模块中删除帮助程序会破坏Magento的部分内容.

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

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

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