Рейтинг:0

Как программно установить ссылку на содержимое по имени для узла?

флаг id

Привет, команда, у меня есть некоторые проблемы.

Я создаю узел, и я хотел бы установить ссылку на контент по имени, а не по идентификатору, я делаю это, но это не работает: 'field_content_type_items' ссылается на другой тип контента

$node = \Drupal\node\Entity\Node::create([
    'тип' => 'предметы',
    'статус' => $статус,
    'название' => $название,
    'field_content_type_items' => "ЦУН",
]);

Также я пробовал с этим примером 'field_content_type_items' => [['target_id' => 12]], но я не знаю идентификатор для КУН поэтому я не могу использовать target_id также я пробовал:

$node->set('field_content_type_items', 'CUN');

Не могли бы вы мне помочь?

Как я могу установить имя контента при создании узла?

С уважением Марио

Рейтинг:2
флаг cn

Поля ссылки на объект ожидают идентификатор объекта, поэтому, если вы не хотите расширять тип поля (что может стать излишне беспорядочным), вам необходимо получить идентификатор целевого контента.

Один из способов сделать это EntityStorageBase::loadByProperties(), например

$target_nodes = \Drupal::entityTypeManager()->getStorage('узел')
  ->loadByProperties(['title' => 'CUN', 'type' => 'foo']);

если (количество ($ target_nodes)) {
  // Для примера предположим, что первый узел правильный.
  $target_id = reset($target_nodes)->id();

  // ...
}

Имейте в виду, что заголовки узлов не уникальны, поэтому вам может потребоваться добавить дополнительную логику фильтрации, чтобы получить именно тот узел, который вам нужен.

mxr10 avatar
флаг id
да, я так и думал, чтобы получить идентификатор узла, используя какой-то запрос, а затем используя target_id, спасибо

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.