Estoy empezando a usar este formulario para acceder a los datos en mi módulo. (Ver comentario # 1. )
$node->field_test[$node->language][0]['value']
Pensé que parecía una solución bastante buena, pero más abajo esa misma pregunta encontré esto :
No asuma que 'und' es para campos de entidades sin lenguaje, también es para campos que no son traducibles y sin el módulo de traducción de entidades que son todos los campos. Además, hay diferencias en esto entre las diversas versiones 7.x de Drupal.
Es mejor usar lafield_get_items()
función que resolverá según el código de idioma en el que se almacenan los datos.
Y ahora no sé si lo que estoy usando podría romper algo en el camino.
entity_metadata_wrapper()
ha quedado en desuso? Intenté llamar a esto en mi módulo, y obtuveFatal error: Call to undefined function entity_metadata_wrapper()
, ¡también hice una búsqueda de fuente en mi instalación de Drupal 7.12 en Dreamweaver, y obtuve 0 resultados en cualquier otro lugar del código!$node->field_name[LANGUAGE_NONE][0]['value'] = 'foo';
es realmente la forma más eficiente.Para leer, siempre debe poder usar field_get_items () , que elegirá el idioma correcto para usted y también comprobará si el campo tiene algún valor.
Desafortunadamente, la API de campo es muy limitada en 7.x, no hay forma de obtener, por ejemplo, el primer elemento de campo, ni siquiera se atreva a preguntar sobre cómo obtener el valor con una sola llamada de función ... Y no hay field_set_items ( ) contrapartida.
Así que sí, el módulo API entidad hace proporcionar una API más bonita con el inconveniente de que también viene con un poco de sobrecarga (Básicamente se convierte cada valor individual a objetos envolventes que tienen un montón de información de propiedad anidada matrices unidas a ellas). Intentar volcar un contenedor de entidades generalmente no le proporcionará nada o un muro de matrices ilegibles.
fuente
fuente