Добавление в новый Highload блок новых полей с помощью API Bitrix (программно)
Нашел статью Создание HL-блока с помощью API Bitrix. Там есть следующий код (см. конец статьи)
$arSavedFieldsRes = Array();
foreach($arCartFields as $arCartField){
$obUserField = new CUserTypeEntity;
$ID = $obUserField->Add($arCartField);
$arSavedFieldsRes[] = $ID;
}
Это код окончательного создания highload блока. Возник вопрос:
" В коде выше была заведена переменная $result
//создание HL-блока для корзин покупателей
$result = HL\HighloadBlockTable::add(array(
'NAME' => 'VisitorCart3',
'TABLE_NAME' => 'visitor_cart3',
));
if ($result->isSuccess()) {
$id = $result->getId();
foreach($arLangs as $lang_key => $lang_val){
HL\HighloadBlockLangTable::add(array(
'ID' => $id,
'LID' => $lang_key,
'NAME' => $lang_val
));
}
} else {
$errors = $result->getErrorMessages();
var_dump($errors);
}
.
Каким образом переменная
$result
связана с$arSavedFieldsRes
? Каким образом сохранение полей в этой переменной влияет на содержимое highload блока, сохраненного в переменной$result
?Может быть вместо нее нужно использовать
$result
?"
Приведите точный правильный код создания highload блока и добавления в него новых полей с помощью API Bitrix.
Ответы (1 шт):
Функция HL\HighloadBlockTable::add() возвращает объект класса AddResult. Этот объект описывает, успешно или нет завершилась операция добавления записи в таблицу. Из него также можно получить индекс добавленной записи.
Смысл её использования в том, что значала записываем строку в основную таблицу (список HL-блоков), и если строка добавлена успешно, записываем значения в таблицу их названий на разных языках.
Добавление поля в таблицу:
$arFields = [
'ENTITY_ID' => 'HLBLOCK_' . $tableID,
'SHOW_FILTER' => 'N',
'SHOW_IN_LIST' => 'Y',
'EDIT_IN_LIST' => 'Y',
'USER_TYPE_ID' => 'string',
'FIELD_NAME' => 'UF_NAME',
];
$obUserTypeEntity = new CUserTypeEntity();
$fieldID = $obUserTypeEntity->Add($arFields);