Trebuie să actualizez opțiunea de valori permise pe un câmp list_integer. Din motive în prezent, nu pot să actualizez și să exportăm configurația și să o import în producție până când implementăm config_ignore. De asemenea, nu vreau să editez mai multe tipuri de blocuri pentru a actualiza câteva câmpuri care apar în mai multe medii - așa că dacă pot să le scriu și să economisesc timp, asta vreau să fac.
Într-un cârlig de actualizare, încerc asta:
/**
* Actualizați opțiunile de rezultat pentru câmpul Număr de rezultate.
*/
function mymodule_update_8001(&$sandbox) {
$valori_permise = [];
pentru ($x = 1; $x < 16; $x++) {
$allowed_values[$x] = (șir) $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->original = $new_config;
$new_config->enforceIsNew(FALSE);
$new_config
->setSetting('allowed_values', $allowed_values)
->salvare();
}
Părea să adauge noile valori în câmp, dar terminalul a scuipat asta atunci când rulează actualizarea bazei de date:
> [warning] assert(): Nu se poate încărca entitatea „field_storage_config” cu ID NULL. a eșuat EntityStorageBase.php:249
> [avertisment] array_flip(): Poate răsturna numai valorile STRING și INTEGER! EntityStorageBase.php:266
Este aceasta modalitatea corectă de a actualiza un câmp existent?