26 septiembre 2018
Comments: Comentarios desactivados

Error Prestashop (Property Address->id_country is empty) al crear dirección en formulario

Encontramos este error en la versión 1.7 de Prestashop cuando tratamos de crear una nueva dirección de entrega en el formulario del checkout:

error prestashop property empty country

Como veo que es un tema recurrente y que hay muchos hilos dando múltiples soluciones y que después de probar unas cuantas no funcionaba, decidí mirarlo por mi cuenta y lo que acabé encontrando es este archivo: /classes/form/CustomerAddressPersister.php al cual le falta la instrucción que haga la inserción en la base de datos de Prestashop, con lo cual hay que añadir algo de código a la función encargada de guardar, la cual localizamos sobre la línea 61 de este mismo archivo, marco en rojo la línea añadida:

public function save(Address $address, $token)
{
if (!$this->authorizeChange($address, $token)) {
return false;
}

$address->id_customer = $this->customer->id;
$address->save(); 

if ($address->isUsed()) {
$old_address = new Address($address->id);
$address->id = $address->id_address = null;

return $address->save() && $old_address->delete();
}

return $address->save();
}

Espero que con este ajuste podáis solucionar este error el cual es un bug de Prestashop.