- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/update/uiformconfiguration.php
- Класс: BitrixCatalogUpdateUiFormConfiguration
- Вызов: UiFormConfiguration::setField
static function setField(array $formSettings, array $index, array $field, string $mode): array
{
if (empty($formSettings) || !static::checkRowIndex($index))
{
return $formSettings;
}
$column = $index['COLUMN'];
$list = $index['LIST'];
$row = $index['ROW'];
if (!isset($formSettings[$column]))
{
return $formSettings;
}
if (!isset($formSettings[$column]['elements'][$list]))
{
return $formSettings;
}
if (
!isset($formSettings[$column]['elements'][$list]['elements'])
|| !is_array($formSettings[$column]['elements'][$list]['elements'])
)
{
return $formSettings;
}
switch ($mode)
{
case self::SET_MODE_FIRST:
array_unshift(
$formSettings[$column]['elements'][$list]['elements'],
$field
);
break;
case self::SET_MODE_LAST:
$formSettings[$column]['elements'][$list]['elements'][] = $field;
break;
case self::SET_MODE_BEFORE:
if (static::isRowExists($formSettings, $index))
{
if ($row === 0)
{
array_unshift(
$formSettings[$column]['elements'][$list]['elements'],
$field
);
}
else
{
$before = array_slice($formSettings[$column]['elements'][$list]['elements'], 0, $row);
$before[] = $field;
$after = array_slice($formSettings[$column]['elements'][$list]['elements'], $row);
$formSettings[$column]['elements'][$list]['elements'] = array_merge(
$before,
$after
);
unset($after, $before);
}
}
break;
case self::SET_MODE_AFTER:
if (static::isRowExists($formSettings, $index))
{
if ($row === count($formSettings[$column]['elements'][$list]['elements']))
{
$formSettings[$column]['elements'][$list]['elements'][] = $field;
}
else
{
$before = array_slice($formSettings[$column]['elements'][$list]['elements'], 0, $row + 1);
$before[] = $field;
$after = array_slice($formSettings[$column]['elements'][$list]['elements'], $row + 1);
$formSettings[$column]['elements'][$list]['elements'] = array_merge(
$before,
$after
);
unset($after, $before);
}
}
break;
}
return $formSettings;
}