Magento에서 모듈 재 작성 클래스 충돌을 방지하는 방법


9

로컬 코드 풀에 사용자 정의 모듈이 있고 커뮤니티 코드 풀에 타사 확장이 모두 동일한 클래스를 확장하므로 Magento Onepage Checkout에서 클래스 재 작성 문제가 있습니다.

한 모듈 의 ModuleA_Name.xml 파일에 종속 노드를 추가하려고 시도한 다음 Onepage.php 파일 에서 ModuleB 클래스를 확장 하려고 시도했지만 작동하지 않았습니다.

누군가이 작업을 수행하는 방법을 알려줄 수 있습니까? 관찰자를 사용하여 다른 방법이 있지만 지금은 해결책이 필요할 수 있습니까? 또한 ModuleB 가 다른 상점 /보기에 대해서만 활성화 될 수 있기 때문에 종속성을 사용하는 것이 위험 합니까?

도움을 주셔서 감사합니다 ...

모듈

<global>
  <rewrite>
      <moduleA>
          <from><![CDATA[#^/checkout/onepage/#]]></from>
          <to>/moduleA/onepage/</to>
      </moduleA>
      <moduleA>
          <from><![CDATA[#^/checkout/cart/add/#]]></from>
          <to>/moduleA/cart/add/</to>
      </moduleA>
  </rewrite>

모듈 B

<global>
    <models>
      <salesrep>
        <class>ModuleB_SalesRep_Model</class>
        <resourceModel>salesrep_mysql4</resourceModel>
      </salesrep>

      <salesrep_mysql4>
        <class>ModuleB_SalesRep_Model_Mysql4</class>
        <entities>
          <salesrep>
            <table>salesrep</table>
          </salesrep>
        </entities>
      </salesrep_mysql4>

      <checkout>
        <rewrite>
          <type_onepage>ModuleB_SalesRep_Model_Type_Onepage</type_onepage>
        </rewrite>
      </checkout>

      <modulebadminthemecontroller>
        <class>LucidPath_SalesRep_Controller</class>
      </modulebadminthemecontroller>
    </models>
</global>

1
어떤 Onepage특정 클래스, 블록 또는 모델?
benmarks

답변:


20

충돌을 해결하기위한 3 가지 선택 사항이 있습니다.

  • 하나의 충돌하는 파일에서 다른 파일로 코드를 병합하고 하나 에서 config.xml 다시 쓰기를 끕니다.
  • 하나의 config.xml에서 다시 쓰기를 끄고 충돌하는 확장자 PHP 파일이 다른 확장자를 확장하게하십시오.
  • <depends>한 확장이 다른 확장에 종속되도록 기능을 사용하십시오 . 그런 다음 순서대로 다시 작성합니다

예 (옵션 # 2)

class A_Extension_Model_Type_Onepage extends Mage_Checkout_Model_Type_Onepage

다음과 같이 변경하십시오.

class A_Extension_Model_Type_Onepage extends B_Extension_Model_Type_Onepage

/programming/14815717/multiple-modules-overriding-same-core-file-in-magento를 참조 하십시오


@benmarks 각 config.xml 파일에서 일부 코드를 추가했습니다
user1704524

글쎄, 나는 moduleA의 클래스를 moduleB의 클래스로 확장함으로써 클래스 재 작성 문제를 해결했다.
user1704524

OPCheckout을 사용 중이고 모듈이 새 단계에 나타나지만 어떤 이유로 인해 opcheckout.js 파일에 의해 호출되지 않으므로 단계를 건너 뜁니다. 콘솔을보고 클래스를 볼 수 section allow있지만 활성화되지 않습니다 ...
user1704524
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.