Różnica między polem a instancją pola?

15

Kiedy przechodzimy do ścieżki /admin/structure/types/manage/article/fieldsi korzystamy z Add new fieldopcji lub Add existing fieldopcji, 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.

Eugene Gerome
źródło
To powinno zdemistyfikować to: dikini.net/31.08.2010/…
Clive
w normalnym przypadku każde dodane pole tworzy nowe pole w bazie danych, a po dodaniu istniejącego pola nie tworzy nowej tabeli, po prostu dodaje ją do istniejącej tabeli.
Mohammed Shameem
1
@Mohammed Shameem, dzięki czemu co to jest instancja? Jaki jest przypadek użycia? A raczej, gdzie go używamy w rzeczywistości?
Eugene Gerome
1
zawsze lepiej jest użyć tej samej instancji pola, jeśli cel jest lub funkcja będzie taka sama. na przykład masz inny typ treści z tym samym słownictwem taksonomii, które chcesz dodać we wszystkich. lepiej byłoby dodać to samo pole do wszystkich typów treści niż tworzyć różne pola do każdego typu zawartości. Wewnętrznie zmniejszyłoby to liczbę tabel budowanych przez drupal. i wyszukiwanie słownika stałoby się lepsze.
Mohammed Shameem
1
Tak więc pola, które widzimy na ścieżce, node/add/articlesą instancjami pól (które są ponownie wykorzystywane w kilku różnych typach jednostek). A pola na ścieżce /admin/structure/types/manage/article/fieldssą 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/fieldsużyciu ścieżki field_create_field. Instancja jest następnie dołączana do pakietu (artykuł w tym przypadku), który widzimy na ścieżce node/add/article.
Eugene Gerome

Odpowiedzi:

24

Pole jest podstawową definicją samego pola. Instancja pola jest instancją tego pola, dołączoną do encji / pakietu.

  1. Pola są tworzone za pomocą field_create_field
  2. Instancje pól z instancją_pola_realizacji

Aby sprawdzić, czy pole lub instancja istnieje, użyj

  1. field_info_field lub
  2. instancja_info

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.

David Thomas
źródło
2
Wielkie dzięki, rozwiałeś moje wątpliwości. Gdybym miał ten przywilej, dałbym +1 Twojemu postowi.
Eugene Gerome