Как обновить переводы сущностей на hook_presave? - PullRequest
1 голос
/ 10 января 2020

Мне нужно обновить значение поля на моем узле при сохранении. Я использую hook_entity_presave, чтобы получить значение и обновить поле при сохранении узла.

Но я хочу обновить это поле во всех языковых переводах этого узла, но он обновляет только узел основного языка ('en').

$node = Node::load($cid);
if (empty($node)) {
  return FALSE;
}
$node->set('field_ship_name', $name);
$node = $node->save();

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 10 января 2020

Попробуйте это:

$node = Node::load($cid);
if (empty($node)) {
  return FALSE;
}
$languages = $node->getTranslationLanguages($include_default = TRUE);
foreach($languages as $lang) {
  $node_translation = \Drupal::service('entity.repository')->getTranslationFromContext($node, $lang);
  $node_translation->set('field_ship_name', $name);
  $node_translation = $node_translation->save();
}
...