Tôi đang cố tự động thêm một mục vào hàng đợi phụ khi lưu. Và vì một số lý do, nó chỉ hoạt động nếu tôi bao gồm chết()
sau đó.
Điều này thêm nút mới vào hàng đợi
chức năng custom_module_entity_insert(EntityInterface $entity) {
...
$subqueue = EntitySubqueue::load($entityqueue_id);
$subqueue->addItem($entity)->save();
chết();
}
Điều này KHÔNG thêm nút mới vào hàng đợi
chức năng custom_module_entity_insert(EntityInterface $entity) {
...
$subqueue = EntitySubqueue::load($entityqueue_id);
$subqueue->addItem($entity)->save();
}
Tôi đã thử đặt các báo cáo về giấc ngủ xung quanh và không thể làm cho nó hoạt động nếu không có chết()
, rõ ràng là sẽ ngắt trang sau khi lưu. Không có bất kỳ thông báo hữu ích nào trong nhật ký lỗi. Vật phẩm được lưu, nó chỉ không được thêm vào hàng đợi nếu không có chết()
.
Bạn còn ý kiến nào không?
Đây là chức năng làm việc của tôi (và ngắt trang)
/**
* Triển khai hook_entity_insert().
*/
chức năng custom_module_entity_insert(EntityInterface $entity) {
// Chỉ lo lắng về các thực thể có thể nhập trường.
if ($entity instanceof FieldableEntityInterface) {
if ($entity instanceof NodeInterface &&
in_array($entity->getType(), ['podcast','video','post'])) {
tự độngAddToEntityqueue($entity);
}
}
}
chức năng tự độngAddToEntityqueue(EntityInterface $entity) {
$entity_queue_type_mapping = mảng(
'podcast' => 'mọi_thứ_podcast',
'video' => 'mọi_thứ_video',
'bài đăng' => 'mọi_thứ_bài_viết'
);
foreach ($entity_queue_type_mapping as $type => $entityqueue_id) {
if ($entity instanceof NodeInterface && $type == $entity->getType()) {
/** @var \Drupal\entityqueue\EntitySubqueueInterface $subqueue */
$subqueue = EntitySubqueue::load($entityqueue_id);
if (method_exists($subqueue, 'addItem')) {
$subqueue->addItem($entity)->save();
chết();
}
}
}
}