Tôi có một thực thể được gọi là Sản phẩm thực thể. Và thực thể này có một biểu mẫu, nếu bạn thay đổi trường Tiêu đề trong biểu mẫu này, Drupal sẽ tự động lưu giá trị mới của trường này vào bảng thích hợp trong cơ sở dữ liệu, nhưng ngoài ra, tôi cũng lưu thay đổi trường Tiêu đề trong form sang một bảng cơ sở dữ liệu khác sản phẩm_sản phẩm bằng cách tạo một _custom_product_save_title
chức năng. Nó là cần thiết. Và chức năng này được gọi trong hook_ENTITY_TYPE_update()
theo dõi các thay đổi trong Sản phẩm Thực thể.
Tôi cần thêm một dấu kiểm để xem tiêu đề đã được lưu chưa và các trường khác có chưa được lưu hay không. Vui lòng cho tôi biết kiểm tra như vậy sẽ trông như thế nào và chính xác thì nó nên ở đâu trong mã?
function _custom_product_save_title($custom_product_id, $entity_product_title) {
if (isset($fields['url']) && $fields['url'] == '') {
if (isset($fields['name'])) {
$fields['url'] = strtolower(str_replace(' ', '-', $fields['name']));
}
}
$id = $form_state->getValue('cid');
if (!empty($form_state->getValue('cid'))) {
$query = $this->connection->update($this->getTableName())
->điều kiện('cid', $form_state->getValue('cid'));
}
khác {
$query = $this->connection->insert($this->getTableName());
}
$kết quả = $truy vấn
-> trường ($ trường)
->thực thi();
nếu (!$id) {
$id = $kết quả;
}
Bộ nhớ đệm::invalidateTags([
"sản phẩm:" . $form_state->getValue('cid'),
]);
Bộ nhớ đệm::invalidateTags([
"sản phẩm:$custom_product_id",
]);
nếu (!$custom_product_id) {
Bộ nhớ đệm::invalidateTags([
"product_list",
]);
}
}
/**
* Triển khai hook_ENTITY_TYPE_update().
*/
chức năng product_admin_node_update(\Drupal\Core\Entity\EntityInterface $entity) {
if ($entity->bundle() == 'product') {
$custom_product_id = $entity->get('field_product_cid')->value;
$entity_product_title = $entity->getTitle();
_custom_product_save_title($custom_product_id, $entity_product_title);
}
}
Sau khi gỡ lỗi mã bằng xdebug, tôi thấy cấu trúc sau của đối số tiêu chuẩn $entity
của cái móc:
$entity
lĩnh vực
trường_sản phẩm_cid
trường_giây
.....
Tiêu đề
x-mặc định
danh sách
0
giá trị
giá trị = âTiêu đề của tôiâ