Magento: Lỗi nghiêm trọng: Không tìm thấy lớp 'Mage_Giftcards_Helper_Data' trong Thẻ / ứng dụng / Mage.php trên dòng 546


16

Tôi đã cài đặt một phần mở rộng mô-đun gây ra lỗi nghiêm trọng

"Lỗi nghiêm trọng: Không tìm thấy lớp 'Mage_Giftcards_Helper_Data' trong .... / app / Mage.php trên dòng 546" trong quản trị viên.

Tôi đã giới thiệu lại liên kết này /programming//a/9191286/2919940 và liên kết này cũng /magento//a/7133/3693

Nhưng tôi có

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

trong tôi config.xmlvà tôi có lớp học này

class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}

tuyên bố tại /app/code/local/Webtex/Giftcards/Helper/Data.phpđường dẫn.

Tôi đã vô hiệu hóa trình biên dịch và xóa bộ nhớ cache bằng cách tạo var/cachethư mục trống .

Tôi đã tìm thấy bất cứ nơi nào config.xmlcần có lớp trình trợ giúp xác định và Data.php nên khai báo lớp trình trợ giúp đó.

Nhưng tôi có cả hai trong số đó trong trường hợp của tôi, lý do cho lỗi này là gì? Tôi cũng đã thử nghiệm mô-đun đó khi cài đặt magento mới,

Phiên bản Magento là 1.7.0.2

Vui lòng cung cấp trợ giúp cho lỗi này ?? Nếu có xung đột tên lớp, làm thế nào chúng ta có thể gỡ lỗi đó ??

Cảm ơn


Hãy cho tôi biết nếu có bất kỳ thông tin bổ sung nào bạn cần từ câu trả lời của tôi hoặc nếu bạn có bản cập nhật.
philwinkle

Câu trả lời:


20

Điều này là phổ biến khi tham khảo một người trợ giúp bị mất tích. Trong nhiều trường hợp, tên lớp không đúng hoặc tên viết tắt của bạn tham chiếu nó không chính xác, đó là lý do Magento tìm kiếm nó trong đường dẫn Mage_Giftcards_Helper_Data(xem ví dụ 1 bên dưới). Đối với các ví dụ sau tôi đã thiết lập một mô-đun gọi là MyCompany_MyModule.

Đây chỉ là một vài trong số nhiều cách bạn có thể gặp khó khăn khi xác định người trợ giúp:


Bí danh lớp người trợ giúp không chính xác:

Tôi tham khảo người trợ giúp của tôi là:

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

Tôi nhận được lỗi:

Fatal error: Class 'Mage_Mycompany_Helper_Data' not found

Có chuyện gì?

Bí danh lớp người trợ giúp của tôi được định nghĩa là mymodule:

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

Thay đổi shortcode của tôi để Mage::helper('mymodule')tạo ra kết quả mong muốn.


Tên lớp không đúng

Tôi tham khảo người trợ giúp của tôi (chính xác là lần này):

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

Tôi nhận:

Fatal error: Class 'MyCompany_MyModule_Helper_Data' not found

Có chuyện gì?

Định nghĩa lớp học của tôi bị thiếu "_Data":

class MyCompany_MyModule_Helper extends Mage_Core_Helper_Abstract
{


}

Người trợ giúp / Tùy chỉnh:

Điều này tương tự như những gì xảy ra khi bạn cố gắng tham khảo một lớp của trình trợ giúp trong một tệp không có tên "Data.php".

Tôi tham khảo người trợ giúp của tôi là:

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

Đường dẫn trình trợ giúp mô-đun của tôi được định nghĩa là:

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

Tôi có một tệp lớp trong app / code / local / MyCompany / MyModule / Helper / Custom.php

Tôi nhận được lỗi:

Fatal error: Class 'Mage_Custom_Helper_Data' not found

Có chuyện gì?

Bạn cần chỉ định các lớp của trình trợ giúp khác trong một mô-đun cụ thể làm đường dẫn phụ đến tên viết tắt của trình trợ giúp mô-đun. Điều này tương tự như cách các khối và mô hình hoạt động - nhưng ở cấp cao nhất không có thư mục con.

Tôi sửa lỗi này bằng cách tham chiếu tệp lớp trình trợ giúp Custom.php của mình như sau:

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

Kiểm tra liên kết Theo dõi, đây cũng có thể là vấn đề thiếu trình trợ giúp stackoverflow.com/questions/19590164/
mẹo

4

Điều này chỉ xảy ra khi bạn cài đặt tiện ích mở rộng với trình biên dịch cho phép Đây là những gì bạn phải làm

Ứng dụng 1 bước / etc / module / mô-đun mà bạn đã cài đặt gần đây vô hiệu hóa mô-đun

2 Bước Đăng nhập vào trình biên dịch quản trị / hệ thống / công cụ vô hiệu hóa trình biên dịch Tải lại mã, nó sẽ hoạt động tốt sau đó bạn có thể biên dịch lại mã của mình

chúc may mắn


1
  1. Đảm bảo rằng tệp Data.php hiện diện bên dưới

codepool/extension_name/module_name/Helper/Data.php

  1. Nếu Data.php có trong thư mục được đề cập ở trên mở tệp đó và sao chép tên lớp, thì về cơ bản tên lớp có ý nghĩa đặt tên Magento như

packagename_modulename_printername (Trình trợ giúp hoặc Chặn) _ tên tệp (Data.php)

<?php

class package_module_Helper_Data{

}
  1. Di chuyển đến thư mục gốc magento và đảm bảo nếu gói_module_Helper_Data.php có trong

includes/src/

  1. Nếu bạn không thấy, hãy tạo một tệp php có tên đó (mà bạn đã gặp lỗi) trong thư mục src
  2. Sao chép nội dung của Data.php và dán nó vào tệp mới được tạo. Tôi chắc chắn rằng nó sẽ giúp bạn
  3. Tuy nhiên, nếu bạn gặp lỗi hoặc magento không hiển thị gì về tiện ích mở rộng, chỉ cần tắt chế độ biên dịch trong hệ thống magento-> Công cụ-> Biên dịch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.