Puncte:0

Cum se atașează programatic un paragraf la un alt paragraf?

drapel in

Am un nod (de exemplu, o „companie”) cu un câmp referit la un paragraf (să presupunem „sector” de afaceri cu mai multe câmpuri). Acest paragraf are în câmpurile sale o trimitere la un alt paragraf (să presupunem „angajat” cu mai multe câmpuri, unul dintre acestea este o referire la un termen de taxonomie). Într-o hook_form_submit(), cu $form și FormStateInterface $form_state ca parametri, trebuie să asociez programatic mai mulți angajați paragraf la un paragraf de sector.

...
$nod = Nod::load($id);
$sector = Paragraph::load($node->get('field_sector')->target_id);

/**
 * Lista de termeni de taxonomie încărcate în altă parte.
 * Am adăugat un element personalizat la selectarea cu „_toți” angajații
 * pentru a asocia programatic toți angajații la sectorul $.
 * 
 * @var array $angajați
 */
foreach ($angajați ca $angajați) {
    $paragraf = Paragraf::create([
        'type' => 'angajat',
    ]);
    $paragraf->set('nume_câmp', $angajat->get('nume_câmp')->valoare);
    $paragraph->set('field_age', $employee->get('field_age')->value);
    ...
    $paragraf->salvare();

    $sector->set('câmp_angajat', $paragraf); // aici nu stiu sa atasez sectorului
    $sector->salvare();
}

Am încercat să asociez fiecare $angajat la $sector dar cu $sector->set('câmp_angajat', $paragraf); sintaxă sau cu $sector->appendItem($paragraf), care funcționează pentru noduri, nu funcționează.

Există o modalitate de a adăuga programatic un paragraf la altul?

Vizualizarea intrebarii, in imaginea de mai jos, cand salvez entitatea cu optiunea personalizata "Toti angajatii" (_toate) selectat, aș dori să atașez toți cei 4 angajați de paragraf asociați la paragraful „un sector selectat” (eliminând _toate).

Mulțumesc anticipat.

EDITARE 1

Am văzut răspunsul sugerat Adăugați în mod programatic mai multe paragrafe la câmpul de referință al entității de pe nod dar rezolvă cum să atașați un Paragraf la a $node, nu un paragraf la un paragraf al $node.

Am incercat si asta:

$angajat->setParentEntity($sector, 'câmp_de_referinţă');
$angajat->salvează();

dar tot nu anexează $angajat la $sector.

EDITARE 2

Am încercat să urmăresc postările sugerate, dar nu îmi pot da seama cum să adaptez acel cod în interiorul unui hook_form_submit().

Mulțumesc oricum tuturor, cred că este o construcție proastă a codului meu.

Acesta este formularul de entitate cu paragrafe înăuntru

Lambic avatar
drapel ph
Ați încercat $sector->field_employee[] = $paragraph?
drapel ru
Răspunde asta la întrebarea ta? [Adăugați în mod programatic mai multe paragrafe la câmpul de referință al entității de pe nod](https://drupal.stackexchange.com/questions/236544/programmatically-append-multiple-paragraphs-to-entity-reference-field-on-node)
drapel ru
Ați încercat să NU salvați entitatea copil, ci doar entitatea părinte?
leymannx avatar
drapel ne
Răspunde asta la întrebarea ta? [Creați paragrafe imbricate în mod programatic](https://drupal.stackexchange.com/questions/292832/create-nested-paragraphs-programmatic)
drapel in
Voi încerca să urmăresc această postare. Poate ai dreptate, este o problema legata de entitatea la care sa atasezi paragraful. Multumesc tuturor.
Puncte:1
drapel cn

Problemele încep cu modul în care încărcați paragraful. Nu îl puteți încărca ca o entitate autonomă:

$sector = Paragraph::load($node->get('field_sector')->target_id);

În schimb, încărcați-l prin câmpul de referință:

$sector = $nod->get('field_sector')->entity;

Apoi puteți adăuga paragrafe nou create fără salvare, de asemenea imbricate, iar când sunteți gata puteți salva entitatea părinte.

Vedea Creați paragrafe imbricate în mod programatic

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.