Differenza tra campo e istanza di campo?


15

Quando andiamo al percorso /admin/structure/types/manage/article/fieldse utilizziamo l' Add new fieldopzione o l' Add existing fieldopzione, crea un campo, crea un'istanza di campo o allega un'istanza di campo? Come distinguere tra loro? Quindi, a livello di codice , quando utilizzare field_create_field , field_create_instance e field_attach API?

Nella documentazione dell'API di campo menziona solo l'interfaccia utente dell'amministratore e non parla mai del percorso in cui creare campi e istanze di campo. Quindi è confuso. Non so nemmeno se abbia senso.


Questo dovrebbe demistificarlo: dikini.net/31.08.2010/…
Clive

e nel caso normale ogni campo che si aggiunge crea un nuovo campo nel database e quando si aggiunge un campo esistente non crea una nuova tabella semplicemente lo aggiunge alla tabella esistente.
Mohammed Shameem,

1
@Mohammed Shameem, grazie allora qual è un esempio? Qual è il caso d'uso? O piuttosto dove lo usiamo nella realtà?
Eugene Gerome,

1
è sempre meglio usare la stessa istanza di campo se lo scopo è o la funzione sarà la stessa. ad esempio hai un tipo di contenuto diverso con lo stesso vocabolario tassonomico da aggiungere in tutto. sarebbe meglio aggiungere lo stesso campo a tutto il tipo di contenuto piuttosto che creare campi diversi per ogni tipo di contenuto. Internamente ciò ridurrebbe il numero di tabelle create da drupal. e la ricerca sul vocabolario sarebbe migliore.
Mohammed Shameem,

1
Quindi i campi che vediamo nel percorso node/add/articlesono istanze di campo (che vengono riutilizzate in diversi tipi di entità). E i campi sul percorso /admin/structure/types/manage/article/fieldssono campi. Nel database non vedo una tabella di istanze di campo ma solo una tabella field_data che, immagino, otteniamo quando creiamo un campo per la prima volta /admin/structure/types/manage/article/fieldsutilizzando il percorso field_create_field. E un'istanza viene quindi allegata a un pacchetto (articolo in questo caso) che vediamo nel percorso node/add/article.
Eugene Gerome,

Risposte:


24

Un campo è la definizione di base di un campo stesso. Un'istanza di campo è un'istanza di quel campo, collegata a un'entità / pacchetto.

  1. I campi vengono creati con field_create_field
  2. Istanze di campo, con field_create_instance

Per verificare se il campo o l'istanza esiste, utilizzare

  1. field_info_field oppure
  2. field_info_instance

Quando si crea un campo tramite l'interfaccia utente, Drupal crea sempre un'istanza di campo su quell'entità / bundle.

Se si aggiunge un campo esistente, i dati del campo vengono clonati e viene creata un'istanza di campo sulla nuova entità / pacchetto.

Infine, le impostazioni del campo si applicano globalmente a quel campo, le impostazioni dell'istanza del campo possono variare tra i pacchetti di entità.


2
Grazie mille, hai chiarito i miei dubbi. Se avessi il privilegio farei +1 sul tuo post.
Eugene Gerome,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.