Jump to content

[Solucionado] Prestashop 1.5.6.2 no admite numeros en el nombre de registro


TechnoSpain

Recommended Posts

Buenos dias

 

Pues este es el problema, muchos clientes nuestros tienen direcciones de facturacion que contienen mumeros en el nombre al ser de sociedades, marcas comerciales, etc y el formulario de registro no lo admite

 

¿Como se puede solucionar? me extraña que esto no venga ya solucionado a estas alturas de prestashop pero no doy con la tecla

 

Saludos

Carlos

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

TechnoSpain pesao!! :P es broma

 

A ver si os puede servir. En la carpeta clases tenéis el Validate.php donde vienen todas las validaciones que hace prestashop o donde deberían estar todas a nivel de campos de formularios.

En este caso que son clientes, en la clase Customer.php están definidos los campos del cliente y bajando encontrareis una variable $definition donde están todos los campos definidos. Ahí tenéis la validación que hace del campo que se corresponderá con el nombre de un método de la clase Validate.php

 

A partir de ahí hay varias opciones, modificar ese método para que acepte números o crear otro método nuevo que acepte números. Lo de crear el método nuevo sería lo suyo ya que normalmente ese método validará otros campos que puede que no os interesen los números.

Link to comment
Share on other sites

TechnoSpain pesao!! :P es broma

 

A ver si os puede servir. En la carpeta clases tenéis el Validate.php donde vienen todas las validaciones que hace prestashop o donde deberían estar todas a nivel de campos de formularios.

En este caso que son clientes, en la clase Customer.php están definidos los campos del cliente y bajando encontrareis una variable $definition donde están todos los campos definidos. Ahí tenéis la validación que hace del campo que se corresponderá con el nombre de un método de la clase Validate.php

 

A partir de ahí hay varias opciones, modificar ese método para que acepte números o crear otro método nuevo que acepte números. Lo de crear el método nuevo sería lo suyo ya que normalmente ese método validará otros campos que puede que no os interesen los números.

 

 

Genial. el problema es que no se crear un clase nueva..

Link to comment
Share on other sites

Estoy mirando en customer.php y veo esto:

	public static $definition = array(
		'table' => 'customer',
		'primary' => 'id_customer',
		'fields' => array(
			'secure_key' => 				array('type' => self::TYPE_STRING, 'validate' => 'isMd5', 'copy_post' => false),
			'lastname' => 					array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
			'firstname' => 					array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
			'email' => 						array('type' => self::TYPE_STRING, 'validate' => 'isEmail', 'required' => true, 'size' => 128),
			'passwd' => 					array('type' => self::TYPE_STRING, 'validate' => 'isPasswd', 'required' => true, 'size' => 32),
			'last_passwd_gen' =>			array('type' => self::TYPE_STRING, 'copy_post' => false),
			'id_gender' => 					array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
			'birthday' => 					array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate'),
			'newsletter' => 				array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
			'newsletter_date_add' =>		array('type' => self::TYPE_DATE,'copy_post' => false),
			'ip_registration_newsletter' =>	array('type' => self::TYPE_STRING, 'copy_post' => false),
			'optin' => 						array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
			'website' =>					array('type' => self::TYPE_STRING, 'validate' => 'isUrl'),
			'company' =>					array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),
			'siret' =>						array('type' => self::TYPE_STRING, 'validate' => 'isSiret'),
			'ape' =>						array('type' => self::TYPE_STRING, 'validate' => 'isApe'),
			'outstanding_allow_amount' =>	array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'copy_post' => false),
			'show_public_prices' =>			array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false),
			'id_risk' =>					array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'copy_post' => false),
			'max_payment_days' =>			array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'copy_post' => false),
			'active' => 					array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false),
			'deleted' => 					array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false),
			'note' => 						array('type' => self::TYPE_HTML, 'validate' => 'isCleanHtml', 'size' => 65000, 'copy_post' => false),
			'is_guest' =>					array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false),
			'id_shop' => 					array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false),
			'id_shop_group' => 				array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false),
			'id_default_group' => 			array('type' => self::TYPE_INT, 'copy_post' => false),
			'id_lang' => 					array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false),
			'date_add' => 					array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false),
			'date_upd' => 					array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false),
Link to comment
Share on other sites

  • 2 weeks later...

Esto:

'lastname' => 					array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
			'firstname' => 					array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),

es nombre y apellidos del cliente

 

Quizas cambiando el:

'validate' => 'isName'

por

'validate' => 'isString'

se lo trage....

 

De todos modos, a ti te interesa el nombre del cliente en la dirección del cliente ¿no?

 

Entonces creo que en ese caso, creo que es en la clase:

 

Address.php

 

Donde veras que tambien tienes esto:

'lastname' => 			array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
			'firstname' => 			array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),

----

 

Aunque mejor seria hacer un override...

 

De todos modos, no estoy seguro si te refieres al nombre y apellidos u a otra cosa.

  • Haha 1
Link to comment
Share on other sites

  • 5 months later...

Hola 

 

 

Resubo porque sigo con el mismo problema y deje a Feliz Garcia sin respuesta..mil perdones

 

Como bien dices, necesito que en las direcciones se pueda poner en nombre y apellidos numeros, ya que muchas empresas su nombre lo lleva,  

 

p.e: Asesoria Lopez 2013 SL

 

En nombre puedes poner Asesoria Lopez

 

Pero en apellidos  si pones 2013 SL da error...(o viceversa, el campo solo admite letras)

 

 

https://drive.google.com/file/d/0B87xh9T9mqZqRUk5clFEOHppVUE/edit?usp=sharing

 

 

 

Necesito que este campo sea del tipo "general" no solo alfabético

Link to comment
Share on other sites

Ve al archivo 

classes/Validate.php

Busca esto

	public static function isName($name)
	{
		return preg_match(Tools::cleanNonUnicodeSupport('/^[^0-9!<>,;?=+()@#"°{}_$%:]*$/u'), stripslashes($name));
	}

Y lo dejas asi

	public static function isName($name)
	{
		return preg_match(Tools::cleanNonUnicodeSupport('/^[^!<>,;?=+()@#"°{}_$%:]*$/u'), stripslashes($name));
	}

Link to comment
Share on other sites

 

Ve al archivo 

classes/Validate.php

Busca esto

	public static function isName($name)
	{
		return preg_match(Tools::cleanNonUnicodeSupport('/^[^0-9!<>,;?=+()@#"°{}_$%:]*$/u'), stripslashes($name));
	}

Y lo dejas asi

	public static function isName($name)
	{
		return preg_match(Tools::cleanNonUnicodeSupport('/^[^!<>,;?=+()@#"°{}_$%:]*$/u'), stripslashes($name));
	}

 

 

Funciona, ya admite los números

 

Edito y pongo como solucionado!

 

Gracias!

Link to comment
Share on other sites

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