Data pembantu tidak ditemukan di magento

8

Saya menulis ekstensi baru dan mencoba membuat file pengaturan konfigurasi di Magento Admin. Ketika saya menjalankan browser setelah membersihkan cache saya mendapatkan kesalahan seperti di bawah ini

Fatal error: Class 'Mage_GlobalSms_Helper_Data' not found in D:\wamp\www\project\app\Mage.php on line 547

Dalam file log kesalahan system.log saya menemukan kesalahan di bawah ini:

2015-05-27T13:40:43+00:00 ERR (3): Warning: include(Mage\GlobalSms\Helper\Data.php): failed to open stream: No such file or directory  in D:\wamp\www\project\lib\Varien\Autoload.php on line 93
2015-05-27T13:40:43+00:00 ERR (3): Warning: include(): Failed opening 'Mage\GlobalSms\Helper\Data.php' for inclusion (include_path='D:\wamp\www\project\app\code\local;D:\wamp\www\project\app\code\community;D:\wamp\www\project\app\code\core;D:\wamp\www\project\lib;.;C:\php\pear')  in D:\wamp\www\project\lib\Varien\Autoload.php on line 93

Aplikasi saya \ etc \ modules \ file seperti di bawah ini:

<?xml version="1.0"?>
<config>
    <modules>
        <Php_GlobalSms>
            <active>true</active>
            <codePool>local</codePool>
            <version>0.0.1</version>
        </Php_GlobalSms>
    </modules>
</config>

Config.xml saya seperti di bawah ini:

<config>
<modules>
    <Ucs_GlobalSms>
        <version>0.0.1</version>
    </Ucs_GlobalSms>
</modules>
<admin>
     <routers>
        <adminhtml>
            <args>
                <modules>
                    <ucs_globalsms before="Mage_Adminhtml">Ucs_GlobalSms_Adminhtml</ucs_globalsms>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
<global>
    <helpers>
        <globalsms>
            <class>Ucs_GlobalSms_Helper</class>
        </globalsms>
    </helpers>
    <models>
        <custommodule>
            <class>Ucs_GlobalSms_Model</class>
        </custommodule>
    </models>
    <events>
        <customer_register_success>
            <observers>
                <Ucs_GlobalSms_customer_register_success>
                    <type>singleton</type>
                    <class>Ucs_GlobalSms_Model_Observer</class>
                    <method>customerRegisterSuccess</method>
                </Ucs_GlobalSms_customer_register_success>
            </observers>
        </customer_register_success>
    </events>
</global>

My Helper / Data.php seperti di bawah ini:

<?php
class Php_GlobalSms_Helper_Data extends Mage_Core_Helper_Abstract {

}

Saya dapat menemukan banyak posting di SO mengatakan bahwa Data.php hilang, tetapi semuanya ada di sana, masih saya mendapatkan kesalahan

Kupu-kupu
sumber
3
Apakah kamu membersihkan <webroot>/var/cache?
pspahn

Jawaban:

10

Deklarasi pembantu Anda akan terlihat seperti ini:

<global>
    <helpers>
        <globalsms>
            <class>Php_GlobalSms_Helper</class>
        </globalsms>
    </helpers>
</global>

dan Anda harus memanggil pembantu Anda dalam kode seperti ini:

Mage::helper('globalsms');
Marius
sumber
Saya berubah sesuai, tetapi masih tidak berfungsi
Butterfly
Pernahkah Anda melihat kesalahan system.log saya?
Butterfly
1
Iya. Periksa apakah modul Anda diambil oleh Magento. Jika ya, maka itu akan berfungsi seperti yang saya jelaskan. Mungkin Anda harus menambahkan pertanyaan Anda sepenuhnya config.xmldan cara Anda menggunakan penolong
Marius
diperbarui config.xml penuh, saya tidak memanggil file pembantu di mana pun. Jika saya tidak menyatakan bahwa saya mendapatkan kesalahan, itulah sebabnya saya menambahkan tag pembantu dalam xml
Butterfly
Kesalahan yang ditunjukkan menunjukkan bahwa nama kelas grup tidak diambil. Ini menunjukkan bahwa config.xml tidak dimuat atau konfigurasi untuk penolong di tempat yang salah. Itu harus di / config / global / helpers seperti yang tercantum dalam jawaban Marius. (perhatikan juga bahwa versi mungkin tidak boleh ada dalam file modul XML).
Kevin Schroeder
5

Nama modul Anda module.xmlberbeda di config.xml.

Saya sendiri tidak yakin apa yang ingin Anda gunakan, Php_GlobalSmsatau Ucs_GlobalSms?

Vernard Luz
sumber
4

Jika Anda mengaktifkan kompilasi (Sistem> Peralatan> Kompilasi), Anda perlu menonaktifkan atau kompilasi ulang. Yang terbaik adalah Anda menonaktifkan Kompilasi ketika Anda melakukan pengembangan.

Magebuzz
sumber
2

Anda perlu mendefinisikan pembantu Anda di config.xml

<config>
<modules>
    <Php_GlobalSms>
        <version>0.0.1</version>
    </Php_GlobalSms>
</modules>
<admin>
     <routers>
        <adminhtml>
            <args>
                <modules>
                    <ucs_globalsms before="Mage_Adminhtml">Php_GlobalSms_Adminhtml</ucs_globalsms>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
<global>
    <models>
        <custommodule>
            <class>Php_GlobalSms_Model</class>
        </custommodule>
    </models>
    <helpers>
        <globalsms>
            <class>Php_GlobalSms_Helper</class>
        </globalsms>
    </helpers>
    <events>
        <customer_register_success>
            <observers>
                <Php_GlobalSms_customer_register_success>
                    <type>singleton</type>
                    <class>Php_GlobalSms_Model_Observer</class>
                    <method>customerRegisterSuccess</method>
                </Php_GlobalSms_customer_register_success>
            </observers>
        </customer_register_success>
    </events>
</global>
brianwalleshauser
sumber
1

Anda mengatakan bahwa Anda membuat pengaturan konfigurasi untuk area admin; di file system.xml, saya berasumsi Anda memiliki sesuatu seperti ini (Anda seharusnya memiliki):

<php_globalsms_options translate="label" module="php_globalsms">[...]

Di sinilah Magento mencoba memuat helper Anda: itu menangani terjemahan, terlepas dari kenyataan apakah Anda memanggil helper di salah satu file Anda atau tidak. Jawaban lain memberi tahu cara yang benar: perbarui file config.xml Anda dan beri tahu Magento bahwa GlobalSms-helper berada di modul Anda.

simonthesorcerer
sumber
1

Saya memiliki masalah yang sama. Saya telah memeriksa config.xml saya dan memeriksa layout saya xml:

  <layout>
        <updates>
            <module_name>
                <file>module_name.xml</file>
            </module_name>
        </updates>
    </layout>

Saya telah melakukan kesalahan di module_name.xml. Saya telah menghapus kode itu yang tidak diperlukan.

alok
sumber