Kiedy przechodzimy do ścieżki /admin/structure/types/manage/article/fields
i korzystamy z Add new field
opcji lub Add existing field
opcji, czy tworzy to pole, tworzy instancję pola czy dołącza instancję pola? Jak je rozróżnić? Więc, programowo, kiedy użyć field_create_field , field_create_instance i field_attach API?
W dokumentacji interfejsu API pola wspomina się tylko o interfejsie administratora i nigdy nie mówi o ścieżce, w której należy utworzyć pola i instancje pól. To jest mylące. Nie wiem nawet, czy mam sens.
node/add/article
są instancjami pól (które są ponownie wykorzystywane w kilku różnych typach jednostek). A pola na ścieżce/admin/structure/types/manage/article/fields
są polami. W bazie danych nie widzę tabeli instancji pola, a jedynie tabelę field_data, którą, jak sądzę, otrzymujemy, kiedy po raz pierwszy tworzymy pole przy/admin/structure/types/manage/article/fields
użyciu ścieżkifield_create_field
. Instancja jest następnie dołączana do pakietu (artykuł w tym przypadku), który widzimy na ścieżcenode/add/article
.Odpowiedzi:
Pole jest podstawową definicją samego pola. Instancja pola jest instancją tego pola, dołączoną do encji / pakietu.
Aby sprawdzić, czy pole lub instancja istnieje, użyj
Kiedy tworzysz pole za pomocą interfejsu użytkownika, Drupal zawsze tworzy instancję pola w tym obiekcie / pakiecie.
Jeśli dodajesz istniejące pole, dane pola są klonowane i instancja pola jest tworzona w nowym obiekcie / pakiecie.
Na koniec ustawienia pola mają zastosowanie globalne do tego pola, ustawienia instancji pola mogą się różnić między pakietami jednostek.
źródło