Jak uzyskać etykietę typu węzła z obiektu węzła?


12

Próbuję uzyskać etykietę pakietu (etykietę typu węzła) węzła z obiektu węzła w Drupal 8.

Działa to, ale wydaje się długie:

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

Czy istnieje inny sposób uzyskania etykiety pakietu, możliwy w mniej skomplikowany sposób?


6
$node->type->entity->label();jest może nieco bardziej wdzięczny? Nie jestem pewien, czy istnieje obecnie krótsza wersja
Clive

2
Działa również w szablonie gałązka: {{node.type.entity.label}}
oknate

Odpowiedzi:





5

Wypróbuj ten kod.

use Drupal\node\Entity\NodeType;

$types = NodeType::loadMultiple();
$bundle = $node->bundle(); 
$type_name = $types[$bundle]->label();

2
To ładuje wszystkie typy węzłów tylko po to, aby uzyskać etykietę jednego. nieco nieefektywny, lepiej po prostu załadować ten, który chcesz.
Berdir

Zgodzić się! To po prostu bazuje na kodzie @No Sssweat.
MrD

@Berdir thx za zwrócenie na to uwagi. Nie chcę kameleon pytania, więc zostawię to jako przyjętą odpowiedź. Zamiast tego używam kodu we własnej odpowiedzi.
Bez Sssweat

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.