web-dev-qa-db-fra.com

Comment accéder aux valeurs de l'objet nœud?

Salut, je ne peux pas accéder aux valeurs d'un objet de nœud à l'intérieur d'un preprocess_views_view . Ci-dessous, une capture d'écran de mon objet et je souhaite accéder à la valeur mise en évidence. Comment puis je faire ça? enter image description here

3
EXE

Pour obtenir l'ID du nœud, vous pouvez utiliser $node->id(). Tout objet étendant ContentEntityBase a cette méthode.

Vous pouvez regarder la classe Node pour voir quelles méthodes getter publiques sont disponibles (aussi, ContentEntityBase et Entity).

Notez que les valeurs protégées ne peuvent pas être écrasées sans méthode de définition - vous devrez donc créer une nouvelle variable à partir de votre hook de prétraitement pour ce faire.

1
Kevin

Le débogage d'un objet d'entité de contenu n'est pas très utile. Au lieu de cela, déboguez sa représentation de tableau ($node->toArray()), vous pouvez accéder à ces données comme ceci:

$node->get('field')->property. Par exemple $node->get('nid')->value.

Pour les champs de base comme l'ID, il existe généralement aussi des méthodes, dans ce cas $node->id() comme mentionné par d'autres.

Voir Aide-mémoire de l'API d'entité pour plus d'informations.

1
Berdir

Il existe plusieurs options:

Vous pouvez utiliser la méthode getter pour l'ID de nœud (disponible pour toutes les entités):

$node->id()

Vous pouvez utiliser méthodes magiques pour accéder à n'importe quel champ de n'importe quelle entité de contenu:

$node->nid->value

Le code ci-dessus déclenchera en fait ce qui suit:

$node->get('nid')->get(0)->get('value')->getValue()
1
Eyal