ในการดำเนินการของ hook_node_insert()
ฉันมีรหัสสามบรรทัดต่อไปนี้:
dpm($เอนทิตี, 'เอนทิตี');
$title = $entity->getTitle();
dpm($ชื่อ, 'ชื่อเรื่อง');
จากครั้งแรก รอบต่อนาที ()
ฉันเข้าใจ:
นิติบุคคล =>
Drupal\node\Entity\Node {#1632 â¼
+in_preview: เป็นโมฆะ
#values: อาร์เรย์:27 [â¼
...
"title" => อาร์เรย์:1 [â¼
"x-default" => อาร์เรย์:1 [â¼
0 => อาร์เรย์:1 [â¼
"value" => "ชื่อที่ต้องการ"
]
]
...
เช่น. เอาต์พุตฟิลด์หัวเรื่องโดยรถดัมพ์ตัวแปรคือฟิลด์หัวเรื่องที่ฉันคาดว่าจะเห็น
ที่สอง รอบต่อนาที ()
ผลิต:
ชื่อเรื่อง =>
"ชื่อก่อนหน้า"
เช่น. เมื่อฉันแยกชื่อเรื่องออกจากเอนทิตีโดยใช้ getTitle()
วิธีการ ฉันได้รับ แตกต่าง ค่า. ค่านี้มาจากเอนทิตี (โหนด) ที่ฉันโหลดในตัวควบคุมการเชื่อมโยงการดำเนินงาน (แทนที่ ฐานคอนโทรลเลอร์
) แต่ไม่ได้บันทึกไว้ในตัวควบคุม และไม่ควรเริ่มทำงาน hook_node_insert()
.
ฉันสร้างและบันทึกโหนดใหม่ในคอนโทรลเลอร์โดยใช้รหัสนี้:
$node = \Drupal::entityTypeManager()->getStorage('node')->create([
'type' => 'my_type',
'ร่างกาย' => 'ร่างกาย',
]);
$node->setTitle('ชื่อเรื่องที่ต้องการ');
$node->save();
ฉันถือว่านี่คือ $node->save();
ที่ไฟ hook_node_insert
.
เกิดขึ้นที่นี่คืออะไร?
เหตุใดชื่อเรื่องหลอกลวงจึงปรากฏในท่อนฮุก และฉันจะได้รับผลลัพธ์ที่คาดหวังได้อย่างไร
สำหรับบันทึก: ฉันไม่ได้เปลี่ยนโหนดใน hook_node_insert
. ฉันจะลบออกหากชื่อเรื่องตรงตามเกณฑ์ที่กำหนด ฉันไม่สามารถใช้ข้อจำกัดเพื่อป้องกันไม่ให้สร้างขึ้นด้วยเหตุผลที่ไม่เกี่ยวข้องกับคำถามนี้