SubscribeTable::checkFields()
Сигнатура
public static checkFields(Result $result, mixed $primary, array<string|int, mixed> $data) : mixed
Описание
Проверяет поля данных перед сохранением в БД. Результат хранится в объекте $result
Параметры
$result
Result
$primary
mixed
$data
array<string|int, mixed>
Возвращаемое значение
mixed
Как применяется в SubscribeTable
SubscribeTable::checkFields() — метод класса \Bitrix\Catalog\SubscribeTable модуля «Торговый каталог». Это ORM-сущность D7 (наследник DataManager): строки читаются как объекты EO_Subscribe, наборы — как EO_Subscribe_Collection. Метод достаётся SubscribeTable от DataManager::checkFields: поведение общее для всех сущностей, а данные, поля и классы — свои.
Проверяет данные перед записью в SubscribeTable: обязательные поля, длину, валидаторы из карты. Вызывается внутри add() и update(), ошибки попадают в их результат.
use Bitrix\Main\Loader;
use Bitrix\Catalog\SubscribeTable;
Loader::includeModule('catalog');
$result = SubscribeTable::add([
'DATE_FROM' => new \Bitrix\Main\Type\DateTime(),
'DATE_TO' => new \Bitrix\Main\Type\DateTime(),
'USER_CONTACT' => 'user_contact',
]);
foreach ($result->getErrors() as $error) {
echo $error->getMessage(), PHP_EOL; // в том числе ошибки checkFields()
}Поля сущности SubscribeTable
| Поле | Тип | Свойства |
|---|---|---|
ID | int | обязательное |
DATE_FROM | datetime | обязательное |
DATE_TO | datetime | необязательное |
USER_CONTACT | string | обязательное |
CONTACT_TYPE | int | обязательное |
USER_ID | int | необязательное |
USER | reference | |
ITEM_ID | int | обязательное |
PRODUCT | reference | |
IBLOCK_ELEMENT | reference | |
NEED_SENDING | bool | |
SITE_ID | int | обязательное |
Список — из описания класса в исходном коде; точный состав в вашей версии вернёт SubscribeTable::getEntity()->getFields().
Собственные методы SubscribeTable
checkPermissionSubscribe()Метод проверяет разрешение на подписку на товар.getContactTypes()Метод возвращает массив доступных типов и позволяет добавить тип с помощью события.onAddContactType()Обработчик onAddContactType. Добавление нового типа контакта.onIblockElementDelete()Обработчик onIblockElementDelete для удаления данных о подписке в случае удаления товара.onProductSetAvailableUpdate()Метод OnProductSetAvailableUpdate для отправки уведомления подписчикам о положительном изменении доступности.onProductUpdate()onSaleOrderSaved()Обработчик OnSaleOrderSaved для отписки при оформлении заказа.onUserDelete()Обработчик onUserDelete для изменения данных подписки при удалении пользователя.runAgentToSendNotice()Метод запускает агент для отправки уведомлений подписчикам.runAgentToSendRepeatedNotice()Метод запускает агент для отправки повторных уведомлений подписчикам.sendNotice()Функция агента. Получает необходимые данные и отправляет уведомления пользователям.sendRepeatedNotice()Функция агента. Получает необходимые данные и отправляет уведомления пользователям.
checkFields() есть и у других классов модуля «Торговый каталог»: CatalogIblockTable, CatalogViewedProductTable, DiscountCouponTable, DiscountModuleTable, DiscountRestrictionTable, DiscountTable, ExtraTable, GroupAccessTable.
Исходный файл: source/catalog/lib/subscribe.php:686

