Как получить метку типа узла от объекта узла?

12

Я пытаюсь получить метку пакета (метку типа узла) узла от объекта узла в Drupal 8.

Это работает, но кажется скучным:

$node_type = \Drupal::entityManager()->getStorage('node_type')->load($node->getType())->get('name');

Есть ли другой способ получить ярлык комплекта, возможно менее сложным способом?

oknate
источник
6
$node->type->entity->label();может быть, немного изящнее? Я не уверен, что есть более короткая версия в настоящее время
Клайв
2
Также работает в шаблоне ветки: {{node.type.entity.label}}
oknate

Ответы:

14

Следующий код работает, как указано в @Clive .

$type_name = $node->type->entity->label();
Нет Sssweat
источник
Работает для меня. Спасибо
Хасан Фарук
8

На случай, если вам понадобится имя компьютера типа узла в шаблоне Twig:

{{ node.getType }}
Альберто Гальвис
источник
6

Если вы хотите ярлык в веточку

{{ node.type.entity.label }}
GiorgosK
источник
5

Попробуйте этот код.

use Drupal\node\Entity\NodeType;

$types = NodeType::loadMultiple();
$bundle = $node->bundle(); 
$type_name = $types[$bundle]->label();
MrD
источник
2
Это загружает все типы узлов только для того, чтобы получить метку одного. немного неэффективно, лучше просто загрузить тот, который вы хотите.
Бердир
Согласен! Это просто основано на коде @No Sssweat.
MrD
@Berdir спасибо за указание на это. Я не хочу хамелеонить вопрос, поэтому я оставлю это как принятый ответ. Вместо этого я использую код в своем собственном ответе.
Нет Sssweat
2

Для этого есть функция

node_get_type_label($node);
Эмиль Стоянов
источник