ฉันมีโหนด (เช่น ธุรกิจ "บริษัท") ที่มีฟิลด์อ้างอิงย่อหน้า (สมมติว่าธุรกิจ "เซกเตอร์" ที่มีหลายฟิลด์) ย่อหน้านี้มีฟิลด์อ้างอิงถึงย่อหน้าอื่น (สมมติว่า "พนักงาน" มีหลายฟิลด์ หนึ่งในนี้คือการอ้างอิงถึงคำศัพท์อนุกรมวิธาน)
ใน hook_form_submit()
, กับ $รูปแบบ
และ FormStateInterface $form_state
ในฐานะพารามิเตอร์ ฉันต้องเชื่อมโยงย่อหน้าพนักงานหลายย่อหน้ากับย่อหน้าภาคโดยทางโปรแกรม
...
$node = โหนด::load($id);
$sector = ย่อหน้า::load($node->get('field_sector')->target_id);
/**
* รายการคำศัพท์อนุกรมวิธานโหลดที่อื่น
* ฉันได้เพิ่มองค์ประกอบที่กำหนดเองในการเลือกกับพนักงาน "_all"
* เพื่อเชื่อมโยงพนักงานทั้งหมดโดยทางโปรแกรมกับ $sector
*
* @var array $employees
*/
foreach ($ พนักงานเป็น $ พนักงาน) {
$paragraph = ย่อหน้า::create([
'ประเภท' => 'พนักงาน',
]);
$paragraph->set('field_name', $employee->get('field_name')->value);
$paragraph->set('field_age', $employee->get('field_age')->value);
...
$วรรค->บันทึก();
$sector->set('field_employee', $paragraph); //ตรงนี้ไม่รู้จะต่อภาคยังไง
$sector->save();
}
ฉันพยายามเชื่อมโยง $employee แต่ละคนกับ $sector แต่กับ $sector->set('field_employee', $paragraph);
ไวยากรณ์หรือด้วย $sector->appendItem($ย่อหน้า)
ที่ใช้ได้กับโหนด แต่ใช้ไม่ได้
มีวิธีเพิ่มย่อหน้าหนึ่งไปยังอีกย่อหน้าหนึ่งโดยทางโปรแกรมหรือไม่?
การแสดงคำถามในภาพด้านล่าง เมื่อฉันบันทึกเอนทิตีด้วยตัวเลือกที่กำหนดเอง "พนักงานทั้งหมด" (_ทั้งหมด
) เลือก ฉันต้องการแนบพนักงานทั้ง 4 ย่อหน้าที่เกี่ยวข้องกับย่อหน้า "ภาคที่เลือก" (ลบ _ทั้งหมด
).
ขอบคุณล่วงหน้า.
แก้ไข 1
ฉันเห็นคำตอบที่แนะนำ ต่อท้ายหลายย่อหน้าโดยทางโปรแกรมไปยังฟิลด์อ้างอิงเอนทิตีบนโหนด แต่จะแก้ไขวิธีแนบย่อหน้ากับ a $โหนด
ไม่ใช่ย่อหน้าไปยังย่อหน้าของ $โหนด
.
ฉันได้ลองสิ่งนี้ด้วย:
$employee->setParentEntity($sector, 'field_of_reference');
$employee->save();
แต่ยังไม่ต่อท้าย $ลูกจ้าง
ไปที่ $ภาค
.
แก้ไข 2
ฉันพยายามทำตามโพสต์ที่แนะนำแล้ว แต่คิดไม่ออกว่าจะปรับโค้ดนั้นใน a hook_form_submit()
.
อย่างไรก็ตาม ขอบคุณทุกคน ฉันคิดว่ามันเป็นการสร้างโค้ดที่ไม่ดีในโค้ดของฉัน