마 젠토 : 치명적인 오류 : 546 행의… / app / Mage.php에 'Mage_Giftcards_Helper_Data'클래스가 없습니다.


16

치명적인 오류가 발생하는 하나의 모듈 확장을 설치했습니다.

"치명적인 오류 : 'Mage_Giftcards_Helper_Data'클래스가 546 행의 .... / app / Mage.php에 없습니다."

나는이 링크 /programming//a/9191286/2919940/magento//a/7133/3693

그러나 나는

<global>
<helpers>
        <giftcards>
            <class>Webtex_Giftcards_Helper</class>
        </giftcards>
    </helpers>
</global>

config.xml수업에이 수업이 있습니다

class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}

/app/code/local/Webtex/Giftcards/Helper/Data.php경로 에서 선언했다 .

var/cache디렉토리 를 만들어 컴파일러를 비활성화하고 캐시를 지 웠습니다 .

config.xml헬퍼 클래스를 정의해야하고 Data.php가 해당 헬퍼 클래스를 선언 해야하는 곳 어디에서나 발견했습니다 .

그러나 내 경우에는 두 가지가 모두 있는데이 오류의 원인은 무엇입니까? 새 magento 설치에서 해당 모듈을 테스트했습니다.

마 젠토 버전은 1.7.0.2입니다

이 오류에 대한 도움말을 제공하십시오 ?? 클래스 이름이 충돌하면 어떻게 디버깅 할 수 있습니까 ??

감사


내 답변에 필요한 추가 정보가 있거나 업데이트가있는 경우 알려주십시오.
philwinkle

답변:


20

이것은 누락 된 도우미를 참조 할 때 일반적입니다. 대부분의 경우 클래스 이름 자체가 잘못되었거나 짧은 참조 이름을 참조하는 것이 잘못되었으므로 Magento가 경로에서 해당 클래스를 찾고 있습니다 Mage_Giftcards_Helper_Data(아래 예 1 참조). 다음 예제에서는이라는 모듈을 설정했습니다 MyCompany_MyModule.

다음은 헬퍼 정의와 관련하여 여러 가지 방법 중 하나 일뿐입니다.


잘못된 헬퍼 클래스 별명 :

내 도우미를 다음과 같이 참조합니다.

$helper = Mage::helper('mycompany');

오류가 발생합니다.

Fatal error: Class 'Mage_Mycompany_Helper_Data' not found

무엇이 잘못 되었나요?

내 도우미 클래스 별칭은 다음과 같이 정의됩니다 mymodule.

<helpers>
    <mymodule>
        <class>MyCompany_MyModule_Helper</class>
    </mymodule>
</helpers>

단축 코드를 변경 Mage::helper('mymodule')하여 원하는 결과를 얻었습니다.


잘못된 클래스 이름

나는 내 도우미를 참조합니다 (정확히 이번에는).

$helper = Mage::helper('mymodule');

나는 받는다 :

Fatal error: Class 'MyCompany_MyModule_Helper_Data' not found

무엇이 잘못 되었나요?

내 클래스 정의에 "_Data"가 없습니다.

class MyCompany_MyModule_Helper extends Mage_Core_Helper_Abstract
{


}

도우미 / 사용자 정의 :

이것은 "Data.php"라는 이름의 파일 내에서 헬퍼 클래스를 참조하려고 할 때 발생하는 것과 유사합니다.

내 도우미를 다음과 같이 참조합니다.

$helper = Mage::helper('custom');

내 모듈 도우미 경로는 다음과 같이 정의되었습니다.

<helpers>
    <mymodule>
        <class>MyCompany_MyModule_Helper</class>
    </mymodule>
</helpers>

app / code / local / MyCompany / MyModule / Helper / Custom.php에 클래스 파일이 있습니다.

오류가 발생합니다.

Fatal error: Class 'Mage_Custom_Helper_Data' not found

무엇이 잘못 되었나요?

특정 모듈의 다른 도우미 클래스를 모듈 도우미의 짧은 이름에 대한 하위 경로로 지정해야합니다. 이것은 블록과 모델의 작동 방식과 유사하지만 최상위 레벨에는 하위 폴더가 없습니다.

내 Custom.php 도우미 클래스 파일을 다음과 같이 참조 하여이 오류를 수정합니다.

$helper = Mage::helper('mymodule/custom');

다음 링크를 확인하면 도우미 누락 문제 일 수 있습니다. stackoverflow.com/questions/19590164/…
Neeraj Garg

4

이것은 enable 컴파일러로 확장 기능을 설치할 때만 발생합니다.

1 최근에 설치 한 app / etc / module / your step 모듈 비활성화 모듈

2 단계 admin / system / tools에 로그인 컴파일러 disable compiler 코드를 다시 업로드하면 정상적으로 작동합니다. 그러면 코드를 다시 컴파일 할 수 있습니다

행운을 빕니다


1
  1. Data.php 파일이 아래에 있는지 확인하십시오

codepool/extension_name/module_name/Helper/Data.php

  1. 위에서 언급 한 디렉토리에있는 Data.php가 해당 파일을 열고 클래스 이름을 복사하면 기본적으로 Magento 이름 지정 의미가있는 클래스 이름

packagename_modulename_foldername (Helper 또는 Block) _ filename (Data.php)

<?php

class package_module_Helper_Data{

}
  1. magento 루트 폴더로 이동하여 package_module_Helper_Data.php

includes/src/

  1. 보이지 않으면 src 디렉토리에 해당 이름으로 오류가 발생한 PHP 파일을 작성하십시오.
  2. Data.php의 내용을 복사하여 새로 생성 된 파일에 붙여 넣습니다. 나는 그것이 당신을 도울 것이라고 확신합니다
  3. 그래도 확장에 대해 아무것도 표시하지 않거나 magento가 표시되면 magento 시스템-> 도구-> 컴파일에서 컴파일 모드를 비활성화하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.