Простая форма добавления/редактирования
Для примера будет использоваться сущность \Bitrix\Iblock\ElementTable модуля iblock
<?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'));
$edit = new \DevBx\Core\Admin\AdminEdit('devbx.forms', "\Bitrix\Iblock\ElementTable", array(
'ALLOW_DELETE' => 'Y',
'ALLOW_ADD' => 'Y',
'TABS' => array(
array(
'TAB' => 'Редактирование',
'TITLE' => 'Редактирование',
'FIELDS' => array(
'ACTIVE',
'ACTIVE_FROM',
'ACTIVE_TO',
'SORT',
'CODE',
'NAME',
),
),
)
));
$edit->setAddParamsFileList('&IBLOCK_ID=' . $IBLOCK_ID);
$edit->setAddParamsFile('&IBLOCK_ID=' . $IBLOCK_ID);
$edit->setSaveCallback(function(\DevBx\Core\Admin\AdminEdit $edit, &$primary, $arLoadFields) use ($IBLOCK_ID) {
$result = new \Bitrix\Main\ORM\Data\Result();
$el = new CIBlockElement();
if (!empty($primary))
{
if (!$el->Update($primary, $arLoadFields))
{
$result->addError(new \Bitrix\Main\Error($el->LAST_ERROR));
}
} else
{
$arLoadFields['IBLOCK_ID'] = $IBLOCK_ID;
$ID = $el->Add($arLoadFields);
if (!$ID)
{
$result->addError(new \Bitrix\Main\Error($el->LAST_ERROR));
} else
{
$primary = $ID;
}
}
return $result;
});
$edit->display();