Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ad-inserter domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vhosts/blog.webeats.it/httpdocs/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the cookie-law-info domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vhosts/blog.webeats.it/httpdocs/wp-includes/functions.php on line 6114
PrestaShop validation su campo nome e cognome - Blog WebEats

Breve guida sulla modifica di PrestaShop per aggirare il validation su campo nome e cognome di utente e indirizzo, permettendo l’inserimento di numeri e parentesi ()

Quando si importano clienti o dati in generale, potrebbe essere necessario dover rendere PrestaShop un pò più permissivo sulla validazione. Infatti quando si lavora con importazione ordini/clienti da eBay o Amazon, può capitare che nome o cognome contengano numeri o (). Bene, PrestaShop le elimina.

Vediamo come ovviare a questo problema.
Editiamo il file classes/Validate.php

/**
 * Check for name validity
 *
 * @param string $name Name to validate
 * @return bool Validity is ok or not
 */
public static function isName($name){
   return preg_match(Tools::cleanNonUnicodeSupport('/^[^0-9!<>,;?=+()@#"°{}_$%:]*$/u'), stripslashes($name));
}

Per abilitare parentesi e numeri, possiamo modificare la regexp da
/^[^0-9!<>,;?=+()@#"°{}_$%:]*$/u
togliendo 0-9 e (), facendola diventare
/^[^!<>,;?=+@#"°{}_$%:]*$/u

L’approccio per proseguire nella modifica è doppio:
1- creare un nuovo metodo, ad esempio creare il metodo MyisName. Sarà necessario modificare anche i seguenti file
File aggiuntivo da modificare classes/Customer.php (vedi righe 6-7)

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' => 'MyisName', 'required' => true, 'size' => 32),
'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'MyisName', 'required' => true, 'size' => 32),

File aggiuntivo da modificare classes/Address.php (vedi righe 13-14)

public static $definition = array(
'table' => 'address',
'primary' => 'id_address',
'fields' => array(
'id_customer' => array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
'id_manufacturer' => array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
'id_supplier' => array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
'id_warehouse' => array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
'id_country' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
'id_state' => array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId'),
'alias' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 32),
'company' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'size' => 64),
'lastname' => array('type' => self::TYPE_STRING, 'validate' => 'MyisName', 'required' => true, 'size' => 32),
'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'MyisName', 'required' => true, 'size' => 32),

2- modificare semplicemente il metodo isName. Questa modifica non richiede altre variazioni ad altri file

ATTENZIONE: in caso di aggiornamento di PrestaShop, le modifiche fatte, andranno perse!