2012-12-22 41 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删除。

相关问题