Валідація customerData
Загальний опис логіки валідації
Масив customerData формується у методі prepareCustomerData та проходить повну перевірку через сервіс CustomerDataValidator.
Назва поля
Тип даних
Обов'язкове
Макс. довжина
Джерело даних у Magento 2 (OrderInterface)
Особливі правила валідації та фільтрації
senderBirthday
date
Ні
50
$customer->getDob() (Тільки для зареєстрованих)
Нове поле. Попередньо нормалізується через DateTimeNormalizer. Валідується суворо за форматом d.m.Y.
senderCustomerId
string
Так
255
Внутрішній метод $this->getCustomerId($order)
Якщо порожнє або невалідне — викликає LocalizedException.
senderFirstName
string
Ні
30
Customer Repository (для клієнтів) або $billingAddress->getFirstname() (для гостей)
Regex: Дозволені літери, цифри, дефіси, апострофи. Без спецсимволів по краях.
Не лише цифри: Не може складатися тільки з цифр.
Стоп-слова (строгий регістр):
NULL,3D SECURE,SURNAME,CARDHOLDER,UNKNOWN.
senderLastName
string
Ні
30
Customer Repository або $billingAddress->getLastname()
Аналогічно до senderFirstName (без перевірки стоп-слів).
senderMiddleName
string
Ні
30
Customer Repository або $billingAddress->getMiddlename()
Аналогічно до senderLastName.
senderEmail
email
Ні
256
$billingAddress->getEmail()
Валідується через нативний об'єкт Magento Magento\Framework\Validator\EmailAddress.
senderCountry
string
Ні
3
$billingAddress->getCountryId()
Двозначний код Alpha2 конвертується в цифровий код країни (Numeric ISO) через countryCodeProvider.
senderRegion
string
Ні
255
$billingAddress->getRegion()
Стандартна перевірка довжини.
senderCity
string
Ні
25
$billingAddress->getCity()
Стандартна перевірка довжини.
senderStreet
string
Ні
35
$billingAddress->getStreet()[0]
Особливість: Береться тільки перший рядок масиву вулиць Magento.
senderAdditionalAddress
string
Ні
255
Не заповнюється в prepareCustomerData
Задекларовано в правилах, але за замовчуванням передається пустим (і видаляється).
senderIp
ip
Ні
—
Внутрішній метод $this->getCustomerIp()
Валідується через нативний об'єкт Magento Magento\Framework\Validator\Ip.
senderPhone
numeric_string
Ні
20
$billingAddress->getTelephone()
Жорстке правило: Має містити тільки цифри. Будь-які інші символи (+, -, пробіли) провалять валідацію.
senderZipCode
string
Ні
50
$billingAddress->getPostcode()
Стандартна перевірка довжини.
Останнє оновлення