¿Diferencia entre campo e instancia de campo?

15

Cuando vamos a la ruta /admin/structure/types/manage/article/fieldsy usamos la Add new fieldopción o la Add existing fieldopción, ¿eso crea un campo, crea una instancia de campo o adjunta una instancia de campo? ¿Cómo diferenciar entre ellos? Entonces, programáticamente, ¿cuándo usar field_create_field , field_create_instance y field_attach API?

En la documentación de la API de campo, solo menciona la IU del administrador y nunca habla sobre la ruta donde crear los campos y las instancias de campo. Entonces es confuso. Ni siquiera sé si tengo sentido.

Eugene Gerome
fuente
Esto debería desmitificarlo: dikini.net/31.08.2010/…
Clive
y en el caso normal, cada campo que agregue crea un nuevo campo en la base de datos y cuando agrega un campo existente, no crea una nueva tabla, solo lo agrega a la tabla existente.
Mohammed Shameem
1
@ Mohammed Shameem, gracias, ¿cuál es una instancia? ¿Cuál es el caso de uso? O más bien, ¿dónde lo usamos en realidad?
Eugene Gerome
1
siempre es mejor usar la misma instancia de campo si el propósito es o la función va a ser la misma. por ejemplo, tiene diferentes tipos de contenido con el mismo vocabulario de taxonomía que se agregará en todos. sería mejor agregar el mismo campo a todo el tipo de contenido en lugar de crear diferentes campos para cada tipo de contenido. Internamente, esto disminuiría el número de tablas creadas por drupal. y buscar el vocabulario sería mejor.
Mohammed Shameem
1
Entonces, los campos que vemos en la ruta node/add/articleson instancias de campo (que se reutilizan en varios tipos de entidades diferentes). Y los campos en el camino /admin/structure/types/manage/article/fieldsson campos. En la base de datos, no veo una tabla de instancia de campo, sino solo una tabla field_data que, supongo, obtenemos cuando creamos un campo en la ruta /admin/structure/types/manage/article/fieldsusando field_create_field. Y una instancia se adjunta a un paquete (artículo en este caso) que vemos en la ruta node/add/article.
Eugene Gerome

Respuestas:

24

Un campo es la definición básica de un campo en sí. Una instancia de campo es una instancia de ese campo, adjunta a una entidad / paquete.

  1. Los campos se crean con field_create_field
  2. Instancias de campo, con field_create_instance

Para verificar si el campo o instancia existe, use

  1. field_info_field o
  2. field_info_instance

Cuando crea un campo a través de la interfaz de usuario, Drupal siempre crea una instancia de campo en esa entidad / paquete.

Si está agregando un campo existente, los datos del campo se clonan y se crea una instancia de campo en la nueva entidad / paquete.

Por último, la configuración de campo se aplica globalmente a ese campo, la configuración de instancia de campo puede variar entre los paquetes de entidades.

David Thomas
fuente
2
Muchas gracias, aclaraste mis dudas. Si tuviera el privilegio, haría +1 en tu publicación.
Eugene Gerome