Валідація customerData
агальний опис логіки валідації
Збір даних клієнта виконується в методі prepareCustomerData(). Об'єкт заповнюється на основі даних профілю користувача ($customer), контексту системи ($context) та адреси доставки замовлення (id_address_delivery). Після цього дані передаються на перевірку в CustomerDataValidator.
Назва поля
Тип даних
Обов'язкове
Макс. довжина
Джерело даних у PrestaShop
Особливі правила валідації та фільтрації
senderBirthday
date
Ні
50
$customer->birthday
Передається лише якщо значення не дорівнює за замовчуванням '0000-00-00'. Нормалізується через DateTimeNormalizer до формату d.m.Y.
senderCustomerId
string
Так
255
$customer->id
(Для гостей: (string)$customer->id ?? $customer->email)
Якщо порожнє або не валідне — викидає LocalizationException.
senderFirstName
string
Ні
30
$customer->firstname
Regex: Літери, цифри, дефіс, апостроф, пробіли. Без спецсимволів на краях строки.
Не лише цифри: Не може складатися суто з цифр.
Стоп-слова: Реєстронезалежний повний збіг з
NULL,3D SECURE,SURNAME,CARDHOLDER,UNKNOWN.
senderLastName
string
Ні
30
$customer->lastname
Аналогічно до senderFirstName (без перевірки стоп-слів).
senderMiddleName
string
Ні
30
Не заповнюється в prepareCustomerData
Правило задекларовано в SDK/валідаторі, але PrestaShop не передає його за замовчуванням.
senderEmail
email
Ні
256
$customer->email
Валідується через нативний PHP флаг filter_var($value, FILTER_VALIDATE_EMAIL).
senderCountry
string
Ні
3
$context->country->iso_code
Двозначний код країни (Alpha2) перетворюється в числовий ISO-код за допомогою countryCodeProvider.
senderRegion
string
Ні
255
$customerAddress['state']
Отримується через метод $customer->getSimpleAddress().
senderCity
string
Ні
25
$customerAddress['city']
Стандартна перевірка довжини.
senderStreet
string
Ні
35
$customerAddress['address1']
Стандартна перевірка довжини.
senderAdditionalAddress
string
Ні
255
$customerAddress['address2']
Стандартна перевірка довжини.
senderIp
ip
Ні
—
Tools::getRemoteAddr()
Валідується через filter_var($value, FILTER_VALIDATE_IP). Якщо IP невалідний — поле видаляється.
senderPhone
numeric_string
Ні
20
$customerAddress['phone'] ?? $customerAddress['phone_mobile']
Фолбек: Якщо домашній телефон відсутній, береться мобільний.
⚠️ Увага: Має містити тільки цифри через перевірку ctype_digit.
senderZipCode
string
Ні
50
$customerAddress['postcode']
Стандартна перевірка довжини.
senderGender
string
Ні
—
Обчислюється на основі $customer->id_gender
Кастомне поле. Мапиться так: 1 ➡️ 'Male', 2 ➡️ 'Female', все інше ➡️ 'Other'. Проходить повз цикл валідації правил.
Останнє оновлення