Jump to content

Error al crear cuenta de cliente - pagina en blanco


Recommended Posts

Estimados, hoy identifique un error al crear un cuenta de usuario nuevo en mi tienda. Una vez que se llena el formulario, al "redireccionar" a la cuenta del usuario, genera el siguiente error:

{"status":false,"exit":false,"errors":["
\nFatal error<\/b>: Call to a member function getProducts() on a non-object in \/home\/*\/public_html\/controllers\/front\/AuthController.php<\/b> on line 462<\/b>
\n"]}

Aclaro que la cuenta es creada con exito, pero se muestra una pagina en blanco.

 
Revisando el codigo en AuthController.php, linea 462, veo lo siguiente:
if (count($this->context->cart->getProducts(true)) > 0)
Tools::redirect('index.php?controller=order'.($multi = (int)Tools::getValue('multi-shipping') ? '&multi-shipping='.$multi : ''));
// else : redirection to the account
else
Tools::redirect('index.php?controller='.(($this->authRedirection !== false) ? urlencode($this->authRedirection) : 'my-account'));

Mi solucion fue sencilla, para evitar la pagina en blanco, comente todo este codigo y deje la siguiente linea:

Tools::redirect('index.php?controller='.(($this->authRedirection !== false) ? urlencode($this->authRedirection) : 'my-account'));

Pero lo interesante es que se realice la redireccion al existir productos en el carrito, si bien es cierto esto no sucederia con clientes nuevos, pero que hay si inicia sesion un cliente que tiene productos en su carrito? Con este cambio que hice no sucedera... :(

 

Alguien tiene una idea de este posible bug y como solucionarlo?

 

Gracias por la ayuda.

 

Saludos,

Edited by zeroblack (see edit history)
Link to comment
Share on other sites

Hola

 

Para poder echarte un cable necesitamos más datos. ¿Qué version de PS tienes?

 

Lo ideal sería que copiaras tu tienda en local y activaras el modo debug en Prestashop y para que te dé mucha más información, puede que tengas algún módulo que genere este error.

 

Para activar el modo Debug deberías de abrir el archivo dominio.com/config/defines.inc.php y en la línea 29 pasar de false a true

define('_PS_MODE_DEV_', true);

Vuelve a crear una cuenta y verás el error con más detalle.

Link to comment
Share on other sites

Gracias por responder,

 

Juntamente activando _PS_MODE_DEV_ logre obtener el error:

{"status":false,"exit":false,"errors":["
\nFatal error<\/b>: Call to a member function getProducts() on a non-object in \/home\/*\/public_html\/controllers\/front\/AuthController.php<\/b> on line 462<\/b>
\n"]}

Lo poco que entiendo es que la linea if (count($this->context->cart->getProducts(true)) > 0) genera un error y no se logra realizar la condicion. Tal parece AuthController.php no tiene acceso a la funcion getProducts() o no es llamada al momento de registrar un nuevo usuario.

 

Tengo PrestaShop v1.6.0.13

 

El mismo error tengo cuando desahabilito todos los override :(

Link to comment
Share on other sites

  • 3 months later...

Confirmado en 1.6.0.14.

 

El fichero AuthController en la línea 462, no verifica que existan los objetos previos de la cadena:

if (count($this->context->cart->getProducts(true)) > 0)

Desconozco a qué puede deberse. En la instalación que he revisado, el cliente estaba configurado para no solicitar la dirección en el proceso del registro (desconozco si puede estar relacionado).

 

De cualquier forma, hasta que haya postura oficial, este hotfix permite funcionar con normalidad.

 

Reemplazar la línea 462 del AuthController (la que puse antes) por ésta. La única diferencia es que ésta verifica que los objetos antecedentes existan para evitar hacer llamadas a uno inexistente.

if ($this->context && $this->context->cart && count($this->context->cart->getProducts(true)) > 0)
Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...