#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

cakephp framework de puta mierda

hola a todos

odio cakephp como se puede leer en el titulo

he perdido una hora de mi vida con la chorrada mas gorda que os podais echar a la cara … necesitaba añadir un campo en un formulario de insercion de productos en la base de datos del panel de administracion de la web … añado el campo en la tabla, añado el campo en el controller en el model en casa dios … todo perfecto

publico ejecuto el campo aparece en el formulario mu guapo … hago una insercion y catacrocker, no inserta anda. Desde el formulariod e modificacion nada tampoco … inserto a pelu gochu en la tabla y en la vista desde cliente no se ve nada. Un cuadro, vamos

Despues de una hora de revolver por google y buscar manuales de php cake para retrasados como yo … no encuentro nada de nada la teoria ye toda muy guapa. Gracias a un foro di con la solucion: cambiar el modo debug de esta morralla de framework de desarrollo a produccion y de nuevo cambiarlo para dejarlo como estaba para forzar la cache y no se cuantas cosas mas … acojonante

Para hacer esto solo tenemos que irnos a la carpeta app/config y en el archivo core.php modificar o añadir porque a mi no me venia la linea Configure::write(‘debug’, 1); 0 = Modo produción. No produce ninguna salida. 1 = Muestra los error y warnings. 2 = Muestra los error, warnings, y consultas SQL 3 = Muestra los error, warnings, consultas SQL, y volcado completo del Controller.

Por si acaso toque tambien la linea Configure::write(‘Cache.disable’, true); y la puse en true que a mi me salia en false, es para que no cachee absolutamente nada de nada

en fin … como podeis ver estoy mas quemao que la moto de un jipi con el cake, seguramente sea un gran framework y la casa santa … pero a mi desde que lo conozco no me ha traido mas que disgustos y me ha quitado años de vida

espero haberle servido de ayuda a alguien, dejo por aqui un bonito enlace donde desarrollan profundamente el tema de la configuracion

http://book.cakephp.org/1.3/es/The-Manual/Developing-with-CakePHP/Configuration.html

un saludo