Puncte:2

Actualizați corect FieldStorageConfig pentru un câmp dintr-un cârlig de actualizare?

drapel in

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?

4uk4 avatar
drapel cn
Nu puteți încărca, modifica și salva entitatea de configurare? Aveți nevoie de cele trei linii suplimentare pentru a crea un duplicat?
Kevin avatar
drapel in
Deci nu este nevoie de duplicat? A apărut un exemplu pe care l-am văzut online.
4uk4 avatar
drapel cn
Nu, clonarea și setarea originalului se fac automat de bază, dacă este necesar. Exemplul este probabil din clasele de bază ale entităților de bază.
Puncte:2
drapel in

A fost aproape acolo inițial, dar datorită 4k4 aceasta este o modalitate de a modifica o listă de valori permise cu valori noi:

/**
 * Implementează hook_install().
 *
 * Prima acțiune actualizează opțiunile de rezultat pentru câmpul Număr de rezultate.
 * Opțiunile ar trebui să fie 1-15, 50, 75 și 100.
 */
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';

  $config = FieldStorageConfig::load('ENTITY_TYPE.FIELD_ID');
  $config
    ->setSetting('allowed_values', $allowed_values)
    ->salvare();
}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.