2011-08-22 19 views
7

Voglio chiamare un file PHP utilizzando ajax dove in quel PHP inserirò l'ordine dall'ajax chiamata. Ma getta errore durante la sto usando app/Mage.php da quel fileMagento: Errore irreversibile: chiamata a una funzione membro getModelInstance() su un oggetto non nell'app Mage.php sulla riga 432

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

allora dice

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

Qualcuno può per favore mi aiuti ???

+0

ho risolto utilizzando $ customer = new Mage_Customer_Model_Customer(); invece di utilizzare $ customer = Mage :: getModel ('cliente/cliente'); – itsazzad

risposta

37

La soluzione proposta non è ottimale. Non hai inizializzato Magento in modo che il modulo XML non sia ancora stato caricato e il modello di fabbrica non funzioni.

Semplicemente utilizzare:

Mage::init(); // 1.5+ 

o

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

prima di utilizzare getModel.

+0

mi mostra questo errore "Mage registry key" controller "esiste già" –

+1

+1 per Mage :: init(); grazie .... –

+0

Grazie Daniel Sloof. Ho faticato molto con questo errore. +11111111 – ParekhAbhishekN

3

Si dovrebbe inizializzare il quadro Magento prima:

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

Sembra 'Mage :: init ($ mageRunCode, $ mageRunType);' sarebbe più appropriato, ma +1! (Ma nota, sto usando Mage EE 1.12 Potrebbe essere diverso per le diverse versioni :) Grazie, ho risolto il mio errore. –

+0

@Shredder: intendevo init() - errore - modificato. – Alex

+0

+1 per questo ... grazie .... mi aiuta molto –

1

è necessario inizializzare Magento. il modo più sicuro per inizializzarlo è utilizzando l'inizializzatore prima della chiamata effettiva al modello

Mage :: init();

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

1

Ho ricevuto lo stesso messaggio di errore. La soluzione era diversa. Ho dimenticato di dare il permesso sulla cartella Magento all'Apache.

chown -R apache:apache magento 
0

io personalmente avevo risolto utilizzando

$customer = new Mage_Customer_Model_Customer(); 

invece di utilizzare

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