2011-08-22 23 views
7

Tôi muốn gọi tệp PHP bằng ajax trong đó PHP i sẽ đặt hàng bằng ajax gọi điện. Nhưng nó throws lỗi trong khi tôi đang sử dụng ứng dụng/Mage.php từ tập tin đóMagento: Lỗi nghiêm trọng: Gọi hàm thành viên getModelInstance() trên một đối tượng không trong ứng dụng Mage.php trên dòng 432

require_once '../../../../../../../../../../app/Mage.php';  
$customer = Mage::getModel('customer/customer'); 

sau đó nó nói

Fatal error: Call to a member function getModelInstance() on a non-object in app\Mage.php on line 432

bất cứ ai có thể vui lòng giúp tôi ???

+0

tôi đã giải quyết nó bằng cách sử dụng $ customer = new Mage_Customer_Model_Customer(); thay vì sử dụng $ customer = Mage :: getModel ('khách hàng/khách hàng'); – itsazzad

Trả lời

37

Giải pháp được đề xuất của bạn không tối ưu. Bạn chưa khởi tạo Magento để mô-đun XML chưa được tải và mẫu nhà máy không hoạt động.

Đơn giản chỉ cần sử dụng một trong hai:

Mage::init(); // 1.5+ 

hoặc

Mage::app(); // (pretty much anything) below 1.5 

trước khi sử dụng getModel.

+0

hiển thị cho tôi lỗi này "Bộ điều khiển khóa đăng ký Mage" đã tồn tại " –

+1

+1 cho Mage :: init(); cảm ơn .... –

+0

Cảm ơn Daniel Sloof. Tôi đã đấu tranh rất nhiều với lỗi này. +11111111 – ParekhAbhishekN

3

Bạn nên khởi Khung Magento đầu tiên:

/* Store or website code */ 
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : ''; 

/* Run store or run website */ 
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store'; 

Mage::init($mageRunCode, $mageRunType, array()); 
+0

Có vẻ như 'Mage :: init ($ mageRunCode, $ mageRunType);' sẽ phù hợp hơn, nhưng +1! (Nhưng lưu ý, tôi đang sử dụng Mage EE 1.12. Có thể khác nhau cho các phiên bản khác nhau :) Cảm ơn, đã giải quyết được lỗi của tôi. –

+0

@Shredder: Ý tôi là init() - error - edited. – Alex

+0

+1 cho điều này ... cảm ơn .... nó giúp tôi rất nhiều –

1

bạn cần phải khởi tạo Magento. cách an toàn nhất để khởi tạo nó là sử dụng trình khởi tạo trước khi gọi thực tế của bạn đến kiểu

Mage :: init();

$ customer = Mage :: getModel ('khách hàng/khách hàng');

1

Tôi nhận được thông báo lỗi tương tự. Giải pháp là khác nhau. Tôi quên cho phép trên thư mục Magento với Apache.

chown -R apache:apache magento 
0

Cá nhân tôi đã giải quyết nó bằng cách sử dụng

$customer = new Mage_Customer_Model_Customer(); 

thay vì sử dụng

$customer = Mage::getModel('customer/customer'); 

Các vấn đề liên quan