Trong một triển khai của hook_node_insert()
, tôi có ba dòng mã sau:
dpm($thực thể, 'thực thể');
$title = $entity->getTitle();
dpm($title, 'title');
Từ đầu tiên dpm()
Tôi có:
thực thể =>
Drupal\node\Entity\Node {#1632 â¼
+in_preview: null
#values: mảng:27 [â¼
...
"tiêu đề" => mảng:1 [â¼
"x-default" => mảng:1 [â¼
0 => mảng:1 [â¼
"giá trị" => "Tiêu đề dự kiến"
]
]
...
I E. đầu ra trường tiêu đề bởi trình kết xuất biến là trường tiêu đề mà tôi muốn thấy.
Thư hai dpm()
sản xuất:
tiêu đề =>
"Tiêu đề trước"
I E. khi tôi trích xuất tiêu đề từ thực thể, sử dụng getTitle()
phương pháp, tôi nhận được một khác biệt giá trị. Giá trị là từ một thực thể (nút) mà tôi tải trong bộ điều khiển liên kết hoạt động (ghi đè Cơ sở điều khiển
), nhưng nó không được lưu bên trong bộ điều khiển và sẽ không kích hoạt hook_node_insert()
.
Tôi xây dựng và lưu một nút mới trong bộ điều khiển, sử dụng mã này:
$node = \Drupal::entityTypeManager()->getStorage('node')->create([
'type' => 'my_type',
'cơ thể' => 'Cơ thể',
]);
$node->setTitle('Tiêu đề dự kiến');
$node->save();
Tôi cho rằng đây là $node->save();
lửa đó hook_node_insert
.
Chuyện gì đang xảy ra ở đây?
Tại sao tiêu đề không có thật xuất hiện trong hook và làm cách nào để tôi nhận được kết quả như mong đợi?
Đối với bản ghi: Tôi không thay đổi nút trong hook_node_insert
. Tôi sẽ xóa nó nếu tiêu đề đáp ứng các tiêu chí nhất định. Tôi không thể sử dụng một ràng buộc để ngăn nó được tạo vì những lý do không liên quan đến câu hỏi này.