Différence entre le champ et l'instance de champ?

15

Lorsque nous allons sur le chemin /admin/structure/types/manage/article/fieldset utilisons l' Add new fieldoption ou l' Add existing fieldoption, cela crée-t-il un champ, crée-t-il une instance de champ ou attache-t-il une instance de champ? Comment les différencier? Donc, par programme, quand utiliser les API field_create_field , field_create_instance et field_attach?

Dans la documentation de l'API de champ, il ne mentionne que l'interface utilisateur d'administration et ne parle jamais du chemin où créer les champs et les instances de champ. C'est donc déroutant. Je ne sais même pas si j'ai du sens.

Eugene Gerome
la source
Cela devrait le démystifier: dikini.net/31.08.2010/…
Clive
et dans le cas normal, chaque champ que vous ajoutez crée un nouveau champ dans la base de données et lorsque vous ajoutez un champ existant, il ne crée pas une nouvelle table l'ajoute simplement à la table existante.
Mohammed Shameem
1
@Mohammed Shameem, merci alors quelle est une instance? Quel est le cas d'utilisation? Ou plutôt où l’utilisons-nous en réalité?
Eugene Gerome
1
il est toujours préférable d'utiliser la même instance de champ si le but est ou si la fonction va être la même. par exemple, vous avez un type de contenu différent avec le même vocabulaire de taxonomie à ajouter en tout. il serait préférable d'ajouter le même champ à tous les types de contenu plutôt que de créer des champs différents pour chaque type de contenu. En interne, cela diminuerait le nombre de tables construites par drupal. et la recherche sur le vocabulaire deviendrait meilleure.
Mohammed Shameem
1
Les champs que nous voyons au chemin node/add/articlesont donc des instances de champ (qui sont réutilisées dans plusieurs types d'entités différents). Et les champs au chemin /admin/structure/types/manage/article/fieldssont des champs. Dans la base de données, je ne vois pas de table d'instance de champ mais uniquement une table field_data que, je suppose, nous obtenons lorsque nous créons un champ à path en /admin/structure/types/manage/article/fieldsutilisant field_create_field. Et une instance est ensuite attachée à un bundle (article dans ce cas) que nous voyons au chemin node/add/article.
Eugene Gerome

Réponses:

24

Un champ est la définition de base d'un champ lui-même. Une instance de champ est une instance de ce champ, attachée à une entité / un ensemble.

  1. Les champs sont créés avec field_create_field
  2. Instances de champ, avec field_create_instance

Pour vérifier si le champ ou l'instance existe, utilisez

  1. field_info_field ou
  2. field_info_instance

Lorsque vous créez un champ via l'interface utilisateur, Drupal crée toujours une instance de champ sur cette entité / bundle.

Si vous ajoutez un champ existant, les données de champ sont clonées et une instance de champ est créée sur la nouvelle entité / bundle.

Enfin, les paramètres de champ s'appliquent globalement à ce champ, les paramètres d'instance de champ peuvent varier entre les ensembles d'entités.

David Thomas
la source
2
Merci beaucoup, vous avez dissipé mes doutes. Si j'avais le privilège, je attribuerais +1 à votre message.
Eugene Gerome