Puncte:0

Cum se copiază câmpuri dintr-o entitate în alta pentru entități de același tip?

drapel in
Lia

Am 2 entități de același tip și pachet, dar folosite în 2 cazuri diferite (legate diferit de entități diferite). La publicarea celei de-a doua entități, vreau să obțin noile date și să le pun în entitatea „principală”, deoarece toată logica este construită pe baza entității principale și interacționează cu alte tipuri de lucruri.

Ce am pana acum:

 $fields_to_exclude = [
  'id',
  „uuid”,
  „vid”,
];

foreach ($second_entity->getFields() ?: [] as $name => $field) {
  dacă (!în_array($nume, $câmpuri_de_exclude)) {
    $main_entity->set($nume, $field->getValue());
  }
}
$main_entity->save();

Sunt în jur de 120 de câmpuri și trebuie să exclud doar 5-10. Problema mea este că vreau să obțin numai câmpuri create în interfață, cum ar fi „field_country_name”, „field_category” etc. Funcția de mai sus returnează toate câmpurile de entitate (cum ar fi ID, UID etc.) și sunt prea multe pentru a fi luate în considerare. Există vreo modalitate de a obține doar „câmpurile create personalizat”? Nu am găsit nimic în API-ul Drupal.

Puncte:0
drapel in
Lia

Aparent, puteți verifica doar dacă numele câmpului conține cuvântul „câmp”, deoarece este specific numai câmpurilor „create din interfață”.

strpos($nume, 'câmp') !== FALSE
drapel cn
Aceasta este o soluție rezonabilă, dar rețineți că este posibil să editați câmpul **nume mașină** din interfață și să eliminați `field_` din acesta, astfel încât soluția dvs. nu garantează că toate câmpurile create de UI vor fi găsite.
4uk4 avatar
drapel cn
Da, tipurile implicite de conținut de nod au, de exemplu, corp și comentariu, care sunt configurabile prin interfața de utilizare, dar nu au prefixul. Ar putea fi o idee mai bună să verificați dacă `$field->getFieldDefinition()` este o instanță a `\Drupal\field\FieldConfigInterface`. Vedeți https://drupal.stackexchange.com/questions/278500/get-the-custom-fields-created-for-user-entity-in-drupal8

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.