Puncte:0

Adăugați în mod programatic valoare câmpului cu mai multe valori/repetitor la greutate/index

drapel cn

În Drupal 8, am un tip de conținut și mai mult de câteva noduri care au un câmp Paragraf cu un număr nelimitat de valori, așa că trebuie să adaug programatic un paragraf la un index la valorile existente în câmp. Știu că în widget-ul editorului de formulare pot adăuga o valoare de câmp, apoi trage câmpul în ordinea de care am nevoie sau pot schimba greutatea, apoi salvează conținutul.

În prezent, încarc nodul și adaug valoarea așa

    $paragraph_node = Paragraph::create($câmpuri);
    $paragraph_node->salvare();

    $nod = Nod::load($nid);

    $nod->field_paragraph_repeater->appendItem(
      [
        'target_id' => $paragraph_node->id(),
        'target_revision_id' => $paragraph_node->getRevisionId(),
      ]
    );

    $nod->salvare();

dar asta adaugă doar valoarea la sfârșit, cum aș putea să adaug asta cu o greutate?

Puncte:0
drapel in

Puteți obține valorile câmpului ca o matrice și apoi le puteți utiliza array_splice pentru a introduce noua valoare unde doriți. Vedea Inserați un element nou în matrice pe orice poziție în PHP.

$valori = $nod->get('field_paragraph_repeater')->getValue();
$adăugare = [
  'target_id' => $paragraph_node->id(),
  'target_revision_id' => $paragraph_node->getRevisionId(),
];
$index_addition = 3;

// Introduceți noua valoare în matricea dvs. $values.
array_splice($valori, $index_adăugare, 0, [$adăugare]);

// Setați valoarea pe nodul dvs. și salvați.
$nod->set('field_paragraph_repeater', $valori);
$nod->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.