#Prestashop: #Error 500 en finalizacion de formulario registro de nuevo usuario

#Prestashop: #Error 500 en finalizacion de formulario registro de nuevo usuario

fuentes: https://javier-valero.es/2013/07/como-resolver-los-errores-500-en-prestashop/

http://www.klosions.com/error-al-registrarse-en-prestashop/

La problematica era la siguiente:

  • te registras como nuevo usuario rellenas todos los datos y en vez de mostrar felicidades ya eres nuevo usuario te aparece la pantalla en blanco con un bonito ERROR500

Por lo visto a prestashop esto le encanta … leyendo en google encontre esta web https://javier-valero.es/2013/07/como-resolver-los-errores-500-en-prestashop/ en la que recomiendan activar el modo debug de prestashop para ver los errores que canta PHP

Lo hice, y me encontre con un error muy desagradable de 4 lineas … copie el ultimo trocito de error donde indicaba nombre de archivo y linea de error y otra vez a nuestro querido google a consultar y encontre esta pagina que me ha salvado el dia http://www.klosions.com/error-al-registrarse-en-prestashop/ dasfg en la que nos indican que modifiquemos el codigo del php que esta dando error (ObjectModel.php) por otro:

vamos a la linea 1032 y nos encontramos con esto


if (!empty($value) || $value === '0' || ($field == 'postcode' && $value == '0')) {
if (isset($data['validate']) && !Validate::$data['validate']($value) && (!empty($value) || $data['required'])) {
$errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is invalid.');
} else {
if (isset($data['copy_post']) && !$data['copy_post']) {
continue;
}
if ($field == 'passwd') {
if ($value = Tools::getValue($field)) {
$this->{$field} = Tools::encrypt($value);
}
} else {
$this->{$field} = $value;
}
}
}

 

y lo sustituimos por esto


if (!empty($value) || $value === '0' || ($field == 'postcode' && $value == '0')) {
if (isset($data['validate']) && !call_user_func('Validate::'.$data['validate'],$value) && (!empty($value) || $data['required'])) {
$errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is invalid.');
} else {
if (isset($data['copy_post']) && !$data['copy_post']) {
continue;
}
if ($field == 'passwd') {
if ($value = Tools::getValue($field)) {
$this->{$field} = Tools::encrypt($value);
}
} else {
$this->{$field} = $value;
}
}
}

me dije a mi mismo “esto no funciona ni de broma, haz un backup del archivo …” pues funciono si señor, muchas gracias a alexhernandez por su gran solucion!

un saludo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s