Magento: Kesalahan fatal: Kelas 'Mage_Giftcards_Helper_Data' tidak ditemukan di ... / app / Mage.php on line 546

16

Saya telah menginstal satu ekstensi modul yang menyebabkan kesalahan fatal

"Kesalahan fatal: Kelas 'Mage_Giftcards_Helper_Data' tidak ditemukan di .... / app / Mage.php on line 546" di admin.

Saya telah mereferensikan tautan ini /programming//a/9191286/2919940 dan tautan ini juga /magento//a/7133/3693

Namun saya memiliki

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

di saya config.xmldan saya memiliki kelas ini

class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}

dideklarasikan di /app/code/local/Webtex/Giftcards/Helper/Data.phppath.

Saya telah menonaktifkan kompiler dan membersihkan cache dengan membuat var/cachedirektori kosong .

Saya menemukan everwhere yang config.xmlseharusnya memiliki kelas pembantu mendefinisikan dan Data.php seharusnya menyatakan kelas pembantu itu.

Tetapi saya memiliki keduanya dalam kasus saya, apa yang bisa menjadi alasan untuk kesalahan ini? Saya telah menguji modul itu pada instalasi magento segar saya juga,

Versi Magento adalah 1.7.0.2

Tolong berikan bantuan untuk kesalahan ini ?? Jika ada konflik nama kelas, bagaimana kita bisa men-debug itu ??

Terima kasih

Mukund Thanki
sumber
Beri tahu saya jika ada informasi tambahan yang Anda butuhkan dari jawaban saya atau jika Anda memiliki pembaruan.
philwinkle

Jawaban:

20

Ini biasa terjadi ketika mereferensikan pembantu yang hilang. Dalam banyak kasus, nama kelas itu sendiri salah bentuk atau nama pendek Anda merujuknya salah, itulah sebabnya Magento mencarinya di jalan Mage_Giftcards_Helper_Data(lihat contoh 1 di bawah). Untuk contoh-contoh berikut ini saya telah menyiapkan sebuah modul bernama MyCompany_MyModule.

Ini hanya beberapa dari banyak cara yang bisa Anda lakukan salah dengan mendefinisikan pembantu:


Alias ​​kelas pembantu salah:

Saya mereferensikan pekerja saya sebagai:

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

Saya mendapatkan kesalahan:

Fatal error: Class 'Mage_Mycompany_Helper_Data' not found

Apa yang salah?

Alias ​​kelas pembantu saya didefinisikan sebagai mymodule:

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

Mengubah kode pendek saya untuk Mage::helper('mymodule')menghasilkan hasil yang diinginkan.


Nama kelas salah bentuk

Saya mereferensikan pembantu saya (kali ini dengan benar):

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

Saya menerima:

Fatal error: Class 'MyCompany_MyModule_Helper_Data' not found

Apa yang salah?

Definisi kelas saya tidak ada "_Data":

class MyCompany_MyModule_Helper extends Mage_Core_Helper_Abstract
{


}

Pembantu / Kustom:

Ini mirip dengan apa yang terjadi ketika Anda mencoba merujuk ke kelas pembantu dalam file yang tidak bernama "Data.php".

Saya mereferensikan pekerja saya sebagai:

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

Jalur pembantu modul saya didefinisikan sebagai:

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

Saya memiliki file kelas di app / kode / lokal / MyCompany / MyModule / Helper / Custom.php

Saya mendapatkan kesalahan:

Fatal error: Class 'Mage_Custom_Helper_Data' not found

Apa yang salah?

Anda perlu menentukan kelas pembantu lainnya dalam modul tertentu sebagai sub-jalur ke nama pendek pembantu modul Anda. Ini mirip dengan cara kerja blok dan model - tetapi pada tingkat teratas tidak ada subfolder.

Saya memperbaiki kesalahan ini dengan merujuk file kelas pembantu Custom.php saya seperti:

$helper = Mage::helper('mymodule/custom');
Philwinkle
sumber
Periksa tautan Berikut ini mungkin juga merupakan masalah penolong yang hilang stackoverflow.com/questions/19590164/…
Neeraj Garg
4

Ini hanya terjadi ketika Anda menginstal ekstensi dengan mengaktifkan kompiler. Inilah yang harus Anda lakukan

1 Langkah app / etc / module / module Anda yang baru saja Anda instal menonaktifkan modul

2 Langkah Masuk ke admin / sistem / alat kompiler nonaktifkan kompilator Unggah kode lagi itu akan berfungsi dengan baik maka Anda dapat mengkompilasi kode Anda lagi

semoga berhasil

pengguna3766719
sumber
1
  1. Pastikan file Data.php ada di bawah Anda

codepool/extension_name/module_name/Helper/Data.php

  1. Jika Data.php hadir dalam direktori yang disebutkan di atas buka file itu dan salin nama kelasnya, pada dasarnya nama kelas yang memiliki arti penamaan Magento seperti

packagename_modulename_foldername (Helper atau Block) _ nama file (Data.php)

<?php

class package_module_Helper_Data{

}
  1. Pindah ke folder root magento dan pastikan apakah package_module_Helper_Data.php hadir

includes/src/

  1. Jika Anda tidak melihat, buat file php dengan nama itu (yang Anda salah) di bawah direktori src
  2. Salin konten Data.php dan tempel di file yang baru dibuat itu saja. Saya yakin itu akan membantu Anda
  3. Masih jika Anda mendapatkan kesalahan atau magento tidak menunjukkan apa-apa tentang ekstensi, cukup nonaktifkan mode kompilasi di bawah magento System-> Tools-> Kompilasi
Jegan
sumber