2011-08-22 37 views
7

我想調用一個PHP文件使用ajax在那裏PHP我會下令由ajax呼叫。但是,當我使用應用程序/ Mage.php從該文件中拋出錯誤Magento:致命錯誤:調用成員函數getModelInstance()在應用程序 Mage.php中的非對象在線432

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

然後它說

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

任何人都可以請幫我嗎?

+0

我已經解決了它使用 解決它210 $ customer = new Mage_Customer_Model_Customer(); 而不是使用 $ customer = Mage :: getModel('customer/customer'); – itsazzad

回答

37

您提出的解決方案不是最優的。您尚未初始化Magento,因此模塊XML尚未加載並且工廠模式不起作用。

只需使用兩種:使用getModel前

Mage::init(); // 1.5+ 

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

+0

它顯示我這個錯誤「Mage註冊表項」控制器「已經存在」 –

+1

Mage :: init();謝謝.... –

+0

謝謝Daniel Sloof。這個錯誤讓我掙扎了很多。 +11111111 – ParekhAbhishekN

3

你應該首先初始化Magento的框架:

/* 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

看起來像'Mage :: init($ mageRunCode,$ mageRunType);'會更合適,但+1! (但是請注意,我使用法師EE 1.12。對於不同版本可能會有所不同:)謝謝,解決了我的錯誤。 –

+0

@碎片:我的意思是init() - 錯誤 - 編輯。 – Alex

+0

爲此+1 ...感謝....它幫助我很多 –

1

需要初始化Magento的。初始化它的最安全的方法是在實際調用模型之前使用初始化器

Mage :: init();

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

1

我得到了同樣的錯誤信息。解決方案是不同的。我忘了將magento文件夾的權限授予Apache。

chown -R apache:apache magento 
0

我個人曾用

$customer = new Mage_Customer_Model_Customer(); 

,而不是使用

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

相關問題