Quando vamos ao caminho /admin/structure/types/manage/article/fields
e usamos a Add new field
opção ou a Add existing field
opção, isso cria um campo, cria uma instância de campo ou anexa uma instância de campo? Como diferenciar entre eles? Então, programaticamente, quando usar a API field_create_field , field_create_instance e field_attach?
Na documentação da API de campo, ele menciona apenas a interface do usuário do administrador e nunca fala sobre o caminho para criar campos e instâncias de campo. Então é confuso. Nem sei se faço sentido.
node/add/article
são instâncias de campo (que são reutilizadas em vários tipos de entidades diferentes). E campos no caminho/admin/structure/types/manage/article/fields
são campos. No banco de dados, não vejo uma tabela de instância de campo, mas apenas a tabela field_data que, suponho, temos quando criamos um campo no caminho/admin/structure/types/manage/article/fields
usandofield_create_field
. E uma instância é anexada a um pacote (artigo neste caso) que vemos no caminhonode/add/article
.Respostas:
Um campo é a definição básica de um campo em si. Uma instância de campo é uma instância desse campo, anexada a uma entidade / pacote configurável.
Para verificar se o campo ou instância existe, use
Quando você cria um campo por meio da interface do usuário, o Drupal sempre cria uma instância de campo nessa entidade / pacote.
Se você estiver adicionando um campo existente, os dados do campo serão clonados e uma instância de campo será criada na nova entidade / pacote configurável.
Por fim, as configurações de campo se aplicam globalmente a esse campo, as configurações da instância de campo podem variar entre os pacotes configuráveis da entidade.
fonte