Câu trả lời:
Bạn không thể nghe một sự kiện. Bạn có thể sử dụng hook hoặc thực hiện một phương thức như postSave () trong thực thể tùy chỉnh của mình.
Dưới đây là thứ tự của hook và các sự kiện khác xảy ra trong quá trình lưu thực thể:
Entity::preSave()
được gọi trên các đối tượng thực thể và FieldItemListInterface::preSave()
trên các đối tượng trường.hook_ENTITY_TYPE_presave()
hook_entity_presave()
Entity::postSave()
được gọi trên đối tượng thực thể.hook_ENTITY_TYPE_insert()
(mới) hoặc hook_ENTITY_TYPE_update()
(cập nhật)hook_entity_insert()
(mới) hoặc hook_entity_update()
(cập nhật)hook_entity_update
không bao gồm các đối tượng mới. Không có móc cho mới hoặc cập nhật, phải không? Tôi phải tạo một hàm khác và làm cho cả hai hook gọi một hàm.
Lý tưởng nhất là bạn sẽ lắng nghe các sự kiện liên quan đến thực thể nhưng chúng chưa sẵn sàng. Xem "Thêm sự kiện cho khớp thực thể phù hợp" .
Hiện tại, nếu bạn muốn tránh xa các hook, bạn có thể sử dụng mô-đun đóng góp: Hook Event Depatcher
A node
là một loại thực thể, hook_ENTITY_TYPE_update(..
cũng giống như hook_node_update(..
,
function hook_node_update(Drupal\Core\Entity\EntityInterface $entity) {
//$entity->bundle() - 'article' 'page'
}
hoặc là
function hook_customentity_update(Drupal\Core\Entity\EntityInterface $entity{
//$entity->bundle() - 'awesome_entity_bundle'
}