Comment puis-je obtenir l'étiquette de type de nœud à partir d'un objet nœud?

12

J'essaie d'obtenir l'étiquette de bundle (étiquette de type de nœud) du nœud à partir d'un objet de nœud dans Drupal 8.

Cela fonctionne, mais semble de longue haleine:

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

Existe-t-il un autre moyen d'obtenir le label du bundle, possible de manière moins compliquée ?

oknate
la source
6
$node->type->entity->label();est peut-être un peu plus gracieux? Je ne suis pas sûr qu'il existe actuellement une version plus courte
Clive
2
Fonctionne également dans le modèle de brindille: {{node.type.entity.label}}
oknate

Réponses:

14

Le code suivant fonctionne, comme indiqué dans @Clive .

$type_name = $node->type->entity->label();
Pas de sueur
la source
Travaille pour moi. Merci
Hassan Farooq
8

Si vous avez besoin du nom de machine de type nœud dans le modèle Twig:

{{ node.getType }}
Alberto Galvis
la source
6

Si vous voulez l'étiquette en brindille

{{ node.type.entity.label }}
GiorgosK
la source
5

Essayez ce code.

use Drupal\node\Entity\NodeType;

$types = NodeType::loadMultiple();
$bundle = $node->bundle(); 
$type_name = $types[$bundle]->label();
MrD
la source
2
Cela charge tous les types de nœuds juste pour obtenir le label d'un. un peu inefficace, mieux vaut simplement charger celui que vous voulez.
Berdir
Se mettre d'accord! C'est juste basé sur le code de @No Sssweat.
MrD
@Berdir thx pour l'avoir signalé. Je ne veux pas caméléon la question, donc je vais laisser cela comme la réponse acceptée. J'utilise plutôt le code dans ma propre réponse.
Pas de Sssweat
2

Il y a une fonction pour ça

node_get_type_label($node);
Emil Stoianov
la source