2012-12-22 1 views
6

많은 확장 기능 (필자가 작성한 확장 기능 포함)에는 기능을 추가하지 않고 추상 기본 클래스를 확장하는 도우미 클래스가 포함되어 있습니다. 도우미는 일반적으로 다음과 같이 보입니다.모든 Magento 확장에 헬퍼 클래스가 필수입니까?

class MyCompany_MyModule_Helper_Data extends Mage_Core_Helper_Abstract { 
} 

따라서 확장 클래스는 특히 번역을 위해 사용되는 추상 클래스에 사용됩니다. 반면에 Magento의 모든 Block 및 Controller 클래스는 __() 변환 방법을 상속합니다. 현재 확장 중이므로 헬퍼 클래스를 한 번 호출 할 필요가 없습니다.

도우미 클래스를 삭제하고 config.xml에서 제거 할 수 있습니까? 나는 그것을 시험해 보았고 확장 기능은 제대로 작동하지 않는 것 같다. 그러나 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"이 있습니다. 이 속성을 지정하면, 라벨을 변환하는 젠토 시스템 코드는 젠토의 일부를 끊을 카탈로그 모듈에서 도우미를 제거하는, 그래서이

Mage::helper('catalog')->__('Label'); 

같이 보일 것입니다.

,

이 "그룹의 번역에 도우미 '기능이 젠토의 XML 파일의 많은뿐만 아니라 system.xml (레이아웃에 사용된다 (단일 부분 클래스 별칭 catalog 자동 젠토 시스템 코드에 의해 Mage::helper('catalog/data')로 변환됩니다) 위젯 등). 또한 Magento에는 번역을위한 도우미 모듈 (액세스 제어, 외부 API 시스템 등)을 유추하거나 필요로하는 시스템이 있습니다.)

Long Story Short : 처음부터 모듈을 만드는 경우 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 템플릿 오류 (국제화/번역)

도우미가 비어 있고 시스템 구성 섹션 및 변환이없는 경우 삭제할 수 있습니다.

관련 문제