ฉันกำลังพยายามเพิ่มรายการในคิวย่อยโดยอัตโนมัติเมื่อบันทึก และด้วยเหตุผลบางอย่าง มันจะใช้ได้ก็ต่อเมื่อฉันใส่เข้าไปด้วย ตาย()
หลังจากนั้น
สิ่งนี้จะเพิ่มโหนดใหม่ให้กับคิว
ฟังก์ชัน custom_module_entity_insert (EntityInterface $entity) {
...
$subqueue = EntitySubqueue::load($entityqueue_id);
$subqueue->addItem($entity)->save();
ตาย();
}
สิ่งนี้ไม่ได้เพิ่มโหนดใหม่ลงในคิว
ฟังก์ชัน custom_module_entity_insert (EntityInterface $entity) {
...
$subqueue = EntitySubqueue::load($entityqueue_id);
$subqueue->addItem($entity)->save();
}
ฉันได้ลองใส่คำสั่งการนอนหลับและไม่สามารถทำงานได้หากไม่มี ตาย()
ซึ่งแบ่งหน้าหลังจากบันทึกอย่างเห็นได้ชัด ไม่มีข้อความที่เป็นประโยชน์ในบันทึกข้อผิดพลาด รายการจะบันทึก แต่จะไม่ถูกเพิ่มลงในคิวหากไม่มี ตาย()
.
คุณมีความคิดใด ๆ ?
นี่คือฟังก์ชั่นการทำงานของฉัน (และแบ่งหน้า)
/**
* ใช้ hook_entity_insert()
*/
ฟังก์ชัน custom_module_entity_insert (EntityInterface $entity) {
// กังวลเฉพาะเอนทิตีที่สามารถฟิลด์ได้
ถ้า (อินสแตนซ์ $entity ของ FieldableEntityInterface) {
ถ้า ($ เอนทิตีอินสแตนซ์ของ NodeInterface &&
in_array($entity->getType(), ['podcast','video','post'])) {
โดยอัตโนมัติ AddToEntityqueue ($ เอนทิตี);
}
}
}
ฟังก์ชัน AutomaticAddToEntityqueue (EntityInterface $entity) {
$entity_queue_type_mapping = อาร์เรย์(
'podcast' => 'everything_else_podcast',
'วิดีโอ' => 'ทุกอย่าง_else_วิดีโอ',
'โพสต์' => 'ทุกอย่าง_else_post'
);
foreach ($entity_queue_type_mapping เป็น $type => $entityqueue_id) {
ถ้า (อินสแตนซ์ $entity ของ NodeInterface && $type == $entity->getType()) {
/** @var \Drupal\entityqueue\EntitySubqueueInterface $subqueue */
$subqueue = EntitySubqueue::load($entityqueue_id);
ถ้า (method_exists ($ subqueue, 'addItem')) {
$subqueue->addItem($entity)->save();
ตาย();
}
}
}
}