Hola, hago este post para ayudar a toda esa gente que usa el software prestashop en sus webs para crear tiendas virtuales. La cuestion es la siguiente, el soft es buenisimo pero al parecer cuando esta hospedado en servidores windows, nos genera un error con el registro de ususarios. Mas precisamente en el campo “Ciudad” El error es el siguiente:

La opcion que vi por ahi fue cambiar de host, lo que implica hacer backup de toda la web y de la base de datos. Muy molesto para mi.
Despues de tanto romperme la cabeza decidi probar una solucion, y funciono!
Lo que primero que hacemos es abrir el archivo classes/Address.php
Ahi buscamos la siguiente linea:
protected $fieldsRequired = array(‘id_country’, ‘alias’, ‘lastname’, ‘firstname’, ‘address1’, ‘postcode’, ‘city’)
Lo que esta en negrita es lo que debemos borrar, o sea en esta linea estan los campos que son obligatorios y al borrar city hacemos que ese campo no sea obligatorio por lo tanto no nos pedira que lo rellenemos.
Lo que debemos hacer ahora es evitar que el usuario lo vea y lo complete, si lo completa nos dara el error, si no, se podra registrar como si nada. Para eso editamos el siguiente archivo: authentication.tpl y esto es lo que debemos eliminar:
<p class=”required text”>
<label for=”city”>{l s=’City’}</label>
<input type=”text” class=”text” name=”city” id=”city” value=”{if isset($smarty.post.city)}{$smarty.post.city}{/if}” />
<sup>*</sup>
</p>
Con eso ya eliminamos el campo Ciudad y no nos dara el maldito error. Finalmente y para lograr que los usuarios nos den su lugar de procedencia, modificamos en el mismo archivo: authentication.tpl el campo adress2, como no es obligatorio el cliente podra ingresar su ciudad ahi, y nosotros podremos enviarle su pedido sin ningun problema. La modificacion es la siguiente:
<p class=”text”>
<label for=”address2″>{l s=’Ciudad’}</label>
<input type=”text” class=”text” name=”address2″ id=”address2″ value=”{if isset($smarty.post.address2)}{$smarty.post.address2}{/if}” />
<sup>*</sup>
</p>
Como veran el cliente vera en el formulario el campo Ciudad pero en realidad es la variable address2 y para asegurarnos que lo rellenen aunque no sea obligatorio va el <sup>*</sup> Como ya sabemos los campos con el * son obligatorios… aunque en realidad no xD
Espero que les sirva esta solucion, yo la implemente en un sitio y me anda de maravillas. Dejen sus buenas y sus malas.