magento - 所有 Magento 扩展都必须使用辅助类吗?

标签 magento magento-1.7

许多扩展(包括我编写的扩展)包括一个帮助类,它只是扩展抽象基类而不添加任何功能。助手通常如下所示:

class MyCompany_MyModule_Helper_Data extends Mage_Core_Helper_Abstract {
}

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

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

最佳答案

如果你从头开始创建一个模块,辅助类并不是绝对必要的。我通常会跳过创建一个,直到需要它。

然而 , 如果任何 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 无法实例化帮助程序的错误。永远不要从模块中删除现有的助手,如果你想确保你 100% 兼容其他人可能做出的假设,总是包含 Data.php助手类。

关于magento - 所有 Magento 扩展都必须使用辅助类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14005596/

相关文章:

php - 模型方法在 magento 自定义模型中显示错误

javascript - 如何使用 cookie 或 localStorage 记住 div 的打开/关闭状态?

Magento Cronjob 导入 : "Error in data structure: entity codes are mixed"

javascript - 当 magento 结帐页面中的国家不是美国和法国时,国家名称应该是文本框

任何页面加载时的 Magento 事件

magento - 如何在管理员的文本区域默认启用所见即所得?

Magento CE 1.7.0.2 – 导入的产品不显示在前端

magento - 更改 Magento 产品的属性集。

magento-1.7 - 如何在 Magento 中调用产品描述中的特定静态 block ?

JavaScript 错误 : product_info_tabsJsTabs is not defined