Рейтинг:1

Как я могу загрузить объект пакета объекта из загруженного объекта?

флаг in

Если я хочу получить объект пакета объекта с узлом, я могу сделать что-то вроде:

$bundle_object = \Drupal::entityTypeManager()
  ->getStorage('тип_узла')
  ->загрузить($node->bundle());

Но это кажется немного затянутым. Есть ли способ получить объект напрямую от объекта? Что-то вроде $entity->getBundleObject()?

флаг cn
Я сомневаюсь, что вы найдете универсальный метод для этого, а не метод для ядра ContentEntityType, в любом случае - пакеты необязательны, поэтому не всегда есть объект для предоставления.
флаг cn
@Clive верен, если вы хотите сократить это, вы можете создать новый [обработчик хранилища] (https://chromichq.com/insights/creating-and-using-entity-storage-methods)
sonfd avatar
флаг in
Хорошо, спасибо, ребята. Я не видел ни одного, поэтому я понял, что это так, но никогда не чувствовал себя хорошо из-за того, как я называл это.
Рейтинг:1
флаг cn

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

$node_type = $node->type->entity;

Более общий для любого объекта контента:

если ($entity->getEntityType()->hasKey('bundle')) {
  $bundle = $entity->get($entity->getEntityType()->getKey('bundle'))->entity;
}
apaderno avatar
флаг us
Вместо вызова `$entity->getEntityType()->hasKey('bundle')` и затем `$entity->getEntityType()->getKey('bundle')` код может просто вызвать `$entity-> getEntityType()->getKey('bundle')`, который возвращает FALSE, если ключ не существует, и имя ключа, если этот ключ существует.
4uk4 avatar
флаг cn
Да, метод *has* на самом деле не нужен, и его можно удалить. Но многие используют их для облегчения чтения кода.
4uk4 avatar
флаг cn
Как прокомментировал @Clive, становится ясно, что пакеты не являются обязательными. Если тип объекта имеет пакеты, необходимо указать ключ пакета.

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

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