node_load((int) $nid)
carga una entidad de nodo completamente poblada. $node->title->value
obtiene el título, pero ¿cómo accedo a los valores de campo en Drupal 8?
63
Supongo que no necesita convertir $entity
en una matriz, esto simplemente funcionaría.
$entity->get('field_name')->getValue();
FYI: Usar kint()
desde el devel_kint
módulo le permitirá conocer todos los métodos disponibles que podrían usarse para acceder a los elementos del objeto, por lo que comparativamente var_dump()
es menos útil.
getValue()
funciona para mí (tanto en 8.1.xy 8.2.x) vea la referencia de la API->getValue()
es genérico y funcionará independientemente del tipo de campo. Si lo usa->value
, solo funciona si el valor del campo se almacena en unavalue
propiedad. No funcionará para tipos más complejos (por ejemplo, fecha o referencia de entidad).en drupal 8, $ node es de clase nodo
o
devolverá una matriz de valores.
Si espera solo uno, también podría encadenar la matriz con
o
fuente
Para campos que debería poder usar,
$node->body->value
por ejemplo. Si no sabe cuáles son los nombres de campo, recomiendo instalar el módulo Devel para Drupal 8 e inspeccionar el nodo a través de likedsm($node)
.fuente
Siempre puede hacer
$entity->toArray()
para ver qué hay en una entidad. Incluso cuando se usa xdebug (por ejemplo, con phpstorm) es muy difícil dar sentido a un objeto de entidad por sí solo. Dudo quedsm($node)
en Drupal 8 tenga sentido. Si insiste en la depuración en el navegador (pero no debería, Drupal 8 es demasiado complejo para depurar sin xdebug)dsm($node->toArray())
es lo que desea.fuente
Drupal\Core\Entity\EntityInterface
tienetoArray
.Use el siguiente fragmento de código para obtener valores de campo de nodo
Esto se utiliza para obtener la identificación del nodo de la url
Para cargar datos de nodo usando nid
Esto se usa para obtener el valor del campo.
Esto se usa para obtener el título del nodo.
fuente
Para mí, tener un
$entity
(un nodo) esto funcionó:utilizando 8.1.
fuente
Mientras usa (la forma correcta real):
fuente
O
Aquí es agradable escribir sobre el acceso a los valores del objeto de nodo https://www.frobiovox.com/posts/2016/03/28/simplify-drupal-8-field-value-calls.html
fuente
Es simplemente:
Si el campo es un campo de referencia de entidad, hay algunas formas especiales de obtener las entidades referenciadas.
Para obtener la identificación de destino (primer elemento):
Para obtener la entidad cargada (primer elemento):
Cuando se usa
->entity
en el campo, carga automáticamente la entidad.Si el campo puede contener múltiples referencias, puede buscarlas todas de esta manera:
Eso te dará una gran variedad de entidades.
fuente