2011-08-22 13 views
7

Quiero llamar a un archivo PHP usando ajax, donde en ese PHP voy a colocar el orden por el ajax llamada. Pero arroja error mientras estoy usando app/Mage.php de ese archivoMagento: Error fatal: Llamar a una función miembro getModelInstance() en un objeto no en la aplicación Mage.php en la línea 432

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

entonces se dice

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

Puede alguien ayudarme por favor ???

+0

lo he resuelto mediante el uso de $ cliente = nuevo Mage_Customer_Model_Customer(); en lugar de usar $ cliente = Mage :: getModel ('cliente/cliente'); – itsazzad

Respuesta

37

Su solución propuesta no es óptima. No ha inicializado Magento, por lo que el módulo XML aún no está cargado y el patrón de fábrica no funciona.

Sólo tiene que utilizar ya sea:

Mage::init(); // 1.5+ 

o

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

antes de usar getModel.

+0

me muestra este error "Controlador de clave de registro de Mage" "ya existe" –

+1

+1 para Mage :: init(); gracias .... –

+0

Gracias Daniel Sloof. Luché mucho con este error. +11111111 – ParekhAbhishekN

3

Debe inicializar el marco Magento primera:

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

Parece que 'Mage :: init ($ mageRunCode, $ mageRunType);' sería más apropiado, ¡pero +1! (Pero tenga en cuenta que estoy usando Mage EE 1.12. Puede ser diferente para diferentes versiones :) Gracias, solucionó mi error. –

+0

@Shredder: Quise decir init() - error - editado. – Alex

+0

+1 por esto ... gracias .... me ayuda mucho –

1

debe inicializar Magento. la forma más segura de inicializarlo es mediante el uso del inicializador antes de su llamada real al modelo

Mage :: init();

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

1

Recibí el mismo mensaje de error. La solución fue diferente. Olvidé dar el permiso en la carpeta magento al Apache.

chown -R apache:apache magento 
0

yo personalmente había resuelto mediante el uso de

$customer = new Mage_Customer_Model_Customer(); 

en lugar de utilizar

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

Cuestiones relacionadas