Diferența dintre Field și Field Instance? (Drupal, 7, Entități)

Eugene Gerome a intrebat.

Când mergem pe calea /admin/structure/types/manage/article/fields și folosim Add new field sau opțiunea Add existing field opțiunea, se creează un câmp, se creează o instanță de câmp sau se atașează o instanță de câmp? Cum să le diferențiem? Așadar, din punct de vedere programatic, când să folosim field_create_field, , field_create_instance și field_attach API?

În documentația API pentru câmpuri se menționează doar interfața de administrare și nu se vorbește niciodată despre calea prin care se pot crea atât câmpurile, cât și instanțele de câmp. Așadar, este confuz. Nici măcar nu știu dacă am înțeles ceva.

Comentarii

  • Acest lucru ar trebui să o demistifice: dikini.net/31.08.2010/… –  > Por Clive.
  • și în mod normal, fiecare câmp pe care îl adăugați creează un nou câmp în baza de date, iar când adăugați un câmp existent nu creează o nouă tabelă, ci doar îl adaugă la tabela existentă. –  > Por Mohammed Shameem.
  • @Mohammed Shameem, mulțumesc, atunci ce este o instanță? Care este cazul de utilizare? Sau, mai degrabă, unde o folosim în realitate? –  > Por Eugene Gerome.
  • este întotdeauna mai bine să se utilizeze aceeași instanță de câmp dacă scopul sau funcția va fi aceeași. de exemplu, aveți diferite tipuri de conținut cu același vocabular taxonomic care trebuie adăugat în toate. ar fi mai bine să adăugați același câmp la toate tipurile de conținut decât să creați câmpuri diferite pentru fiecare tip de conținut. Pe plan intern, acest lucru ar reduce numărul de tabele create de Drupal, iar căutarea pe vocabular ar deveni mai bună. –  > Por Mohammed Shameem.
  • Așadar, câmpurile pe care le vedem la calea node/add/article sunt instanțe de câmp (care sunt reutilizate la mai multe tipuri de entități diferite). Iar câmpurile de la path /admin/structure/types/manage/article/fields sunt câmpuri. În baza de date nu văd o tabelă de instanțe de câmp, ci doar o tabelă field_data, pe care, cred, o obținem atunci când creăm pentru prima dată un câmp la calea de acces /admin/structure/types/manage/article/fieldsutilizând field_create_field. Și o instanță este apoi atașată la un pachet (articol în acest caz) pe care îl vedem la calea node/add/article. –  > Por Eugene Gerome.
1 răspunsuri
David Thomas

Un câmp este definiția de bază a unui câmp în sine.un câmp instanță este o instanță a acelui câmp, atașată unei entități/unui pachet.

  1. Câmpurile sunt create cu field_create_field
  2. Instanțele de câmp, cu field_create_instance

Pentru a verifica dacă câmpul sau instanța există, utilizați

  1. field_info_field sau
  2. field_info_instance

Atunci când creați un câmp prin intermediul interfeței de utilizare, Drupal creează întotdeauna o instanță de câmp pentru acea entitate/unitate.

Dacă adăugați un câmp existent, datele câmpului sunt clonate și este creată o instanță de câmp pe noua entitate/unitate.

În cele din urmă, setările câmpului se aplică la nivel global pentru acel câmp, iar setările instanței de câmp pot varia între pachetele de entități.

Comentarii

  • Vă mulțumesc mult, mi-ați clarificat îndoielile. Dacă aș avea privilegiul, aș face +1 la postul dvs. –  > Por Eugene Gerome.