Am o entitate numită Entity Product. Și această entitate are un formular, dacă modificați câmpul Titlu din acest formular, Drupal va salva automat noua valoare a acestui câmp în tabelul corespunzător din baza de date, dar în plus, salvez și modificarea câmpului Titlu în formular într-un alt tabel de bază de date produs_produs prin crearea unui _custom_product_save_title
funcţie. Este necesar. Și această funcție este numită în hook_ENTITY_TYPE_update()
care urmărește modificările în Produsul Entității.
Trebuie să adaug o verificare pentru a vedea dacă titlul este salvat și dacă alte câmpuri nu sunt salvate. Vă rog să-mi spuneți cum ar trebui să arate un astfel de control și unde ar trebui să fie exact în cod?
funcția _custom_product_save_title($custom_product_id, $entity_product_title) {
if (isset($fields['url']) && $fields['url'] == '') {
if (isset($fields['nume'])) {
$fields['url'] = strtolower(str_replace(' ', '-', $fields['nume']));
}
}
$id = $form_state->getValue('cid');
dacă (!empty($form_state->getValue('cid'))) {
$interogare = $this->connection->update($this->getTableName())
->condition('cid', $form_state->getValue('cid'));
}
else {
$interogare = $this->connection->insert($this->getTableName());
}
$rezultat = $interogare
->câmpuri($câmpuri)
->execute();
dacă (!$id) {
$id = $rezultat;
}
Cache::invalidateTags([
"produs:" . $form_state->getValue('cid'),
]);
Cache::invalidateTags([
„produs:$custom_product_id”,
]);
dacă (!$custom_product_id) {
Cache::invalidateTags([
"lista de produse",
]);
}
}
/**
* Implementează hook_ENTITY_TYPE_update().
*/
function product_admin_node_update(\Drupal\Core\Entity\EntityInterface $entity) {
if ($entity->bundle() == 'produs') {
$custom_product_id = $entity->get('field_product_cid')->value;
$entity_product_title = $entity->getTitle();
_custom_product_save_title($custom_product_id, $entity_product_title);
}
}
După depanarea codului folosind xdebug, văd următoarea structură a ceea ce vine în argumentul standard $entitate
a cârligului:
$entitate
câmpuri
field_product_cid
field_second
.....
titlu
x-implicit
listă
0
valorile
valoare = âTitlul meuâ