Uno puede recuperar elementos de campo de una entidad con
// Find all terms on $node in field 'field_tags'.
$terms = field_get_items('node', $node, 'field_tags');
Pero, ¿hay una manera conveniente de hacer lo contrario, Core o de otra manera?
// Attach new term $term to $node in field 'field_tags'.
$term = taxonomy_term_load($tid);
$node = field_set_items('node', $node, 'field_tags', 'taxonomy_term', $term);
node_save($node);
Me gustaría evitar la molestia de asignar manualmente un término $, ir a ver cómo se ve la estructura de la matriz y luego construir la matriz a mano, ya que a veces no es trivial.
El único problema en la cola central que pude encontrar que parecía vagamente similar fue sobre el lenguaje de campo api DX .
Para que tal función exista,
field_set_items()
debería ser capaz de identificar elstdClass
objeto como el de un término de taxonomía, y también asignarlo a una función que pueda decodificar el objeto y crear una matriz de campo a partir de él.Como no hay una función central para hacer eso, no creo que esto sea fácil.
fuente
entity_type
no es realmente el problema en mi humilde opinión ... el problema es exactamente lo que ha agregado a su pregunta: "a veces no es trivial". Debido a que los datos no son triviales, parafield_set_items
que funcione como lo desee, cada tipo de campo en el sistema necesitaría implementar algún tipo de interfaz que describa cómo realizar ingeniería inversa en la matriz de datos desde un objeto / variable arbitraria.Aunque esto no ayuda a construir la estructura de matriz a veces complicada, veo que lo que estoy buscando se ha introducido hasta cierto punto en Drupal 8. Quizás se extenderá aún más en el futuro. :)
Nueva API más simple disponible para acceder a campos, propiedades e información de idioma .
Ejemplo de uso de la página vinculada:
fuente