node_load((int) $nid)
charge une entité de noeud entièrement remplie. $node->title->value
obtient le titre, mais comment puis-je accéder aux valeurs de champ dans Drupal 8?
63
Je suppose que vous n'avez pas besoin de convertir $entity
en tableau, cela fonctionnerait simplement.
$entity->get('field_name')->getValue();
FYI: L'utilisation kint()
de ce devel_kint
module vous permettra de connaître toutes les méthodes disponibles pouvant être utilisées pour accéder aux éléments de l'objet. Par conséquent, cette méthode var_dump()
est moins utile.
getValue()
fonctionne pour moi (tous les deux sur 8.1.x et 8.2.x) voir la référence api->getValue()
est générique et fonctionnera quel que soit le type de champ. Si vous utilisez->value
, cela ne fonctionne que si la valeur du champ est stockée dans unevalue
propriété. Cela ne fonctionnera pas pour des types plus complexes (par exemple, date ou référence à une entité).dans drupal 8, $ node étant un noeud de classe
ou
retournera un tableau de valeurs.
Si vous n’en attendez qu’un seul, vous pouvez aussi bien hiérarchiser le tableau avec
ou
la source
Pour les champs, vous devriez pouvoir utiliser
$node->body->value
par exemple. Si vous ne connaissez pas les noms de champs, je vous recommande d'installer le module Devel pour Drupal 8 et d'inspecter le nœud via likedsm($node)
.la source
Vous pouvez toujours
$entity->toArray()
voir ce qu'il y a dans une entité. Même en utilisant xdebug (par exemple avec phpstorm), donner un sens à un objet entité est très difficile. Je doute quedsm($node)
Drupal 8 ait un sens. Si vous insistez sur le débogage dans le navigateur (mais vous ne devriez pas, Drupal 8 est trop complexe pour déboguer sans xdebug)dsm($node->toArray())
est ce que vous voulez.la source
Drupal\Core\Entity\EntityInterface
atoArray
.Utilisez l'extrait de code suivant pour obtenir les valeurs de champ de nœud
Ceci est utilisé pour obtenir l'identifiant du noeud à partir de l'URL
Pour charger les données de nœud à l'aide de nid
Ceci est utilisé pour obtenir la valeur du champ.
Ceci est utilisé pour obtenir le titre du noeud.
la source
Pour moi, avoir un
$entity
(un noeud) cela a fonctionné:en utilisant 8.1.
la source
En utilisant (de manière correcte):
la source
Ou
Voici une bonne description de l'accès aux valeurs de l'objet nœud https://www.frobiovox.com/posts/2016/03/28/simplify-drupal-8-field-value-calls.html
la source
C'est simplement:
Si le champ est un champ de référence d'entité, il existe des moyens spéciaux pour obtenir les entités référencées.
Pour obtenir l'id cible (premier élément):
Pour obtenir l'entité chargée (premier élément):
Lors de l'utilisation
->entity
sur le terrain, il charge automatiquement l'entité.Si le champ peut contenir plusieurs références, vous pouvez toutes les récupérer comme ceci:
Cela vous donnera un tableau d'entités.
la source