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


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');

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?


4

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


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>

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.


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.