У меня есть сущность под названием Entity Product. И эта сущность имеет форму, если изменить поле Заголовок в этой форме, Drupal автоматически сохранит новое значение этого поля в соответствующей таблице в базе данных, но кроме того, я также сохраняю изменение поля Заголовок в формы в другую таблицу базы данных продукт_продукт путем создания _custom_product_save_title
функция. Это необходимо. И эта функция вызывается в крючок_ENTITY_TYPE_update()
который отслеживает изменения в Entity Product.
Мне нужно добавить проверку, чтобы увидеть, сохранен ли заголовок и не сохранены ли другие поля. Подскажите пожалуйста, как должна выглядеть такая проверка и где именно она должна быть в коде?
функция _custom_product_save_title($custom_product_id, $entity_product_title) {
если (isset($fields['url']) && $fields['url'] == '') {
если (isset($fields['имя'])) {
$fields['url'] = strtolower(str_replace(' ', '-', $fields['name']));
}
}
$id = $form_state->getValue('cid');
если (!пусто($form_state->getValue('cid'))) {
$query = $this->connection->update($this->getTableName())
->условие('cid', $form_state->getValue('cid'));
}
еще {
$query = $this->connection->insert($this->getTableName());
}
$результат = $запрос
->поля($поля)
->выполнить();
если (!$id) {
$id = $результат;
}
Кэш::invalidateTags([
"товар:" . $form_state->получить значение('цид'),
]);
Кэш::invalidateTags([
"продукт: $custom_product_id",
]);
если (!$custom_product_id) {
Кэш::invalidateTags([
"список продуктов",
]);
}
}
/**
* Реализует hook_ENTITY_TYPE_update().
*/
function product_admin_node_update(\Drupal\Core\Entity\EntityInterface $entity) {
если ($entity->bundle() == 'продукт') {
$custom_product_id = $entity->get('field_product_cid')->значение;
$entity_product_title = $entity->getTitle();
_custom_product_save_title($custom_product_id, $entity_product_title);
}
}
После отладки кода с помощью xdebug я вижу следующую структуру того, что входит в стандартный аргумент $сущность
из крючка:
$сущность
поля
field_product_cid
поле_секунда
.....
заглавие
х-по умолчанию
список
0
ценности
value = «Мой титул»