Своя функция обновления данных (setUpdateFunction)
Когда нужно заменить стандартную функцию сущности Update для изменения данных нужно установить свой обработчик через функцию setUpdateFunction
обработчик должен вернуть объект \Bitrix\Main\Entity\UpdateResult
обработчик должен вернуть объект \Bitrix\Main\Entity\UpdateResult
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php');
use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);
Loader::includeModule("iblock");
Loader::includeModule("devbx.core");
$IBLOCK_ID = intval(\Bitrix\Main\Context::getCurrent()->getRequest()->get('IBLOCK_ID'));
$list = new DevBx\Core\Admin\AdminList('iblock', '\Bitrix\Iblock\ElementTable', array(
'ALLOW_EDIT' => 'Y',
'ALLOW_ADD' => 'Y',
'ALLOW_DELETE' => 'Y',
'HEADER_FIELDS' => array(
'ID',
'TIMESTAMP_X',
'MODIFIED_BY',
'DATE_CREATE',
'CREATED_BY',
'ACTIVE',
'ACTIVE_FROM',
'ACTIVE_TO',
'SORT',
'CODE',
'NAME',
),
'FILTER_HEADER' => '<input type=hidden name="IBLOCK_ID" value="' . $IBLOCK_ID . '">',
));
$list->addFileEditParams('&IBLOCK_ID=' . $IBLOCK_ID);
$list->setActionGroupAddParams('&IBLOCK_ID=' . $IBLOCK_ID);
$list->setFilterFields(array(
'ID' => 'RANGE',
'TIMESTAMP_X' => 'RANGE',
'DATE_CREATE' => 'RANGE',
'ACTIVE',
'ACTIVE_FROM' => 'RANGE',
'ACTIVE_TO' => 'RANGE',
'SORT' => 'RANGE',
'CODE',
'NAME',
));
$list->setCallbackApplyFilter(function (&$arFilter, &$arFilterValues) use ($IBLOCK_ID) {
$arFilter['IBLOCK_ID'] = $IBLOCK_ID;
});
$list->setUpdateFunction(function ($ID, $arFields) {
$result = new \Bitrix\Main\Entity\UpdateResult();
$el = new CIBlockElement();
if (!$el->Update($ID, $arFields)) {
$result->addError(new \Bitrix\Main\Entity\EntityError($el->LAST_ERROR));
}
return $result;
});
$list->display();