Мне нужно обновить параметр разрешенных значений в поле list_integer. По причинам на данный момент я не могу просто обновить и экспортировать конфигурацию и импортировать ее в производство, пока мы не реализуем config_ignore. Я также не хочу редактировать несколько типов блоков, чтобы обновить несколько полей, появляющихся в нескольких средах, поэтому, если я могу написать сценарий и сэкономить время, это то, что я хочу сделать.
В хуке обновления я пытаюсь сделать это:
/**
* Обновите параметры результата для поля Result Count.
*/
функция mymodule_update_8001(&$песочница) {
$allowed_values = [];
для ($x = 1; $x < 16; $x++) {
$allowed_values[$x] = (строка) $x;
}
$allowed_values[50] = '50';
$allowed_values[75] = '75';
$allowed_values[100] = '100';
$old_config = FieldStorageConfig::load('block_content.field_result_count');
$new_config = $old_config->createDuplicate();
$new_config->исходный = $new_config;
$new_config->enforceIsNew(FALSE);
$new_config
->setSetting('разрешенные_значения', $разрешенные_значения)
-> сохранить();
}
Казалось, что нужно добавить новые значения в поле, но терминал выдал это при запуске обновления базы данных:
> [предупреждение] assert(): невозможно загрузить сущность field_storage_config с нулевым идентификатором. ошибка EntityStorageBase.php:249
> [предупреждение] array_flip(): может переворачивать только значения STRING и INTEGER! EntityStorageBase.php:266
Это правильный способ обновить существующее поле?