Unterschied zwischen Feld und Feldinstanz?

15

Wenn wir zum Pfad gehen /admin/structure/types/manage/article/fieldsund die Add new fieldOption oder die Add existing fieldOption verwenden, wird dann ein Feld erstellt, eine Feldinstanz erstellt oder eine Feldinstanz angehängt? Wie kann man sie unterscheiden? Also, programmatisch, wenn die Verwendung field_create_field , field_create_instance und field_attach API?

In der Feld-API-Dokumentation wird nur die Administrator-Benutzeroberfläche erwähnt, und es wird nie der Pfad angegeben, in dem sowohl Felder als auch Feldinstanzen erstellt werden sollen. Es ist also verwirrend. Ich weiß nicht einmal, ob ich überhaupt einen Sinn habe.

Eugene Gerome
quelle
Dies sollte es entmystifizieren: dikini.net/31.08.2010/…
Clive
Im Normalfall erstellt jedes Feld, das Sie hinzufügen, ein neues Feld in der Datenbank. Wenn Sie ein vorhandenes Feld hinzufügen, wird keine neue Tabelle erstellt, sondern nur die vorhandene Tabelle hinzugefügt.
Mohammed Shameem
1
@ Mohammed Shameem, danke, was ist dann eine Instanz? Was ist der Anwendungsfall? Oder eher wo verwenden wir es in der Realität?
Eugene Gerome
1
Es ist immer besser, dieselbe Feldinstanz zu verwenden, wenn der Zweck oder die Funktion gleich ist. Sie haben beispielsweise einen anderen Inhaltstyp mit demselben Taxonomievokabular, das insgesamt hinzugefügt werden soll. Es ist besser, dasselbe Feld zum gesamten Inhaltstyp hinzuzufügen, als für jeden Inhaltstyp unterschiedliche Felder zu erstellen. Intern würde dies die Anzahl der von Drupal erstellten Tabellen verringern. und die Suche nach dem Wortschatz würde besser werden.
Mohammed Shameem
1
Felder, die wir im Pfad sehen, node/add/articlesind also Feldinstanzen (die bei verschiedenen Entitätstypen wiederverwendet werden). Und Felder im Pfad /admin/structure/types/manage/article/fieldssind Felder. In der Datenbank sehe ich keine Feldinstanztabelle, sondern nur die Tabelle field_data, die wir vermutlich erhalten, wenn wir zum ersten Mal ein Feld unter path /admin/structure/types/manage/article/fieldsmit erstellen field_create_field. Und eine Instanz wird dann an ein Bundle (in diesem Fall Artikel) angehängt, das wir unter path sehen node/add/article.
Eugene Gerome

Antworten:

24

Ein Feld ist die grundlegende Definition eines Feldes. Eine Feldinstanz eine Instanz dieses Feld, das an eine Einheit / Bündel.

  1. Felder werden mit field_create_field erstellt
  2. Feldinstanzen mit field_create_instance

Verwenden Sie, um zu überprüfen, ob das Feld oder die Instanz vorhanden ist

  1. field_info_field oder
  2. field_info_instance

Wenn Sie ein Feld über die Benutzeroberfläche erstellen, erstellt Drupal immer eine Feldinstanz für diese Entität / dieses Bundle.

Wenn Sie ein vorhandenes Feld hinzufügen, werden die Felddaten geklont und eine Feldinstanz für die neue Entität / das neue Bundle erstellt.

Schließlich gelten Feldeinstellungen global für dieses Feld. Die Einstellungen für Feldinstanzen können zwischen Entitätsbündeln variieren.

David Thomas
quelle
2
Vielen Dank, Sie haben meine Zweifel ausgeräumt. Wenn ich das Privileg hätte, würde ich Ihren Beitrag +1 geben.
Eugene Gerome