Lorsque nous allons sur le chemin /admin/structure/types/manage/article/fields
et utilisons l' Add new field
option ou l' Add existing field
option, 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.
node/add/article
sont 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/fields
sont 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/fields
utilisantfield_create_field
. Et une instance est ensuite attachée à un bundle (article dans ce cas) que nous voyons au cheminnode/add/article
.Réponses:
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.
Pour vérifier si le champ ou l'instance existe, utilisez
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.
la source