Создание сущности: поля, типы, валидаторы
Карта полей собирается из объектов скалярных типов (IntegerField, StringField, DatetimeField), для которых настраиваются первичные ключи, автоинкремент и значения по умолчанию. Для проверки корректности данных к полям подключаются валидаторы через метод addValidator(), а чувствительные данные шифруются с помощью CryptoField.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Описание полей
-
2
Типы полей
-
3
Валидаторы
-
4
Валидаторы ORM
-
5
Кастомные валидаторы
-
6
Сообщения об ошибках
Материалы
Официальная документация
-
Криптографические поля в ORM Новая дока
-
Валидация Новая дока
Материалы BXMax
Проверь себя
Поле TOKEN перевели на CryptoField, и поиск where('TOKEN', $token) перестал находить записи. Почему?
В базе лежит шифртекст, и сравнение идёт с ним, а не с исходным значением. По CryptoField нельзя ни фильтровать, ни сортировать; для поиска храните рядом отдельное поле с хешем.
Обязательное поле не передали в update(), а результат успешный. Это баг?
Нет. DataManager::checkFields() на обновлении проверяет required только для ключей, которые пришли в данных и оказались пустыми. Отсутствие ключа означает «не трогать поле». Пустая строка в переданном ключе — ошибка BX_EMPTY_REQUIRED.
Заказчик жалуется, что в базе появились записи с ISBN из букв, хотя в поле есть validation с RegExp. Где искать?
Проверьте форму параметра: validation — это callback, возвращающий массив валидаторов, а не сам массив. Массив вместо функции ядро молча проигнорирует. Надёжнее вешать проверки через addValidator() на объект поля.
Чем атрибут #[Email] из Bitrix Main Validation отличается от валидатора поля ORM?
Это разные механизмы. Атрибуты проверяют DTO и параметры действий контроллера через ValidationService до вызова действия. Валидаторы ORM живут в карте поля и срабатывают внутри add() и update(). Сущность не знает про атрибуты, контроллер — про валидаторы полей.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить