Perbedaan antara Field dan Field Instance?

15

Ketika kita pergi ke jalan /admin/structure/types/manage/article/fieldsdan menggunakan Add new fieldopsi atau Add existing fieldopsi, apakah itu membuat bidang, membuat contoh bidang atau melampirkan contoh bidang? Bagaimana cara membedakannya? Jadi, secara pemrograman, kapan harus menggunakan field_create_field , field_create_instance , dan field_attach API?

Dalam dokumentasi API lapangan, hanya disebutkan UI admin dan tidak pernah berbicara tentang jalur tempat membuat bidang dan contoh bidang. Jadi itu membingungkan. Aku bahkan tidak tahu apakah aku masuk akal.

Eugene Gerome
sumber
Ini harus menghilangkannya
Clive
dan dalam kasus normal setiap bidang yang Anda tambahkan membuat bidang baru dalam database dan ketika Anda menambahkan bidang yang sudah ada itu tidak membuat tabel baru hanya menambahkannya ke tabel yang ada.
Mohammed Shameem
1
@Mohammed Shameem, terima kasih lalu bagaimana? Apa gunanya? Atau tepatnya di mana kita menggunakannya dalam kenyataan?
Eugene Gerome
1
itu selalu lebih baik untuk menggunakan contoh bidang yang sama jika tujuannya atau fungsinya akan sama. misalnya Anda memiliki tipe konten berbeda dengan vocab taksonomi yang sama untuk ditambahkan di semua. akan lebih baik untuk menambahkan bidang yang sama ke semua jenis konten daripada membuat bidang yang berbeda untuk setiap jenis konten. Secara internal ini akan mengurangi jumlah tabel yang dibangun oleh drupal. dan mencari pada vocab akan menjadi lebih baik.
Mohammed Shameem
1
Jadi bidang yang kita lihat di path node/add/articleadalah instance bidang (yang digunakan kembali di beberapa tipe entitas yang berbeda). Dan bidang di jalur /admin/structure/types/manage/article/fieldsadalah bidang. Dalam database saya tidak melihat tabel instance bidang tetapi hanya tabel field_data yang, saya kira, kita dapatkan ketika kita pertama kali membuat bidang di jalur /admin/structure/types/manage/article/fieldsmenggunakan field_create_field. Dan sebuah instance kemudian dilampirkan pada sebuah bundel (artikel dalam kasus ini) yang kita lihat di path node/add/article.
Eugene Gerome

Jawaban:

24

Field adalah definisi dasar dari field itu sendiri. Bidang contoh adalah turunan dari bidang itu, melekat pada suatu entitas / bundel.

  1. Fields dibuat dengan field_create_field
  2. Instance bidang, dengan field_create_instance

Untuk memeriksa apakah bidang, atau contoh ada, gunakan

  1. field_info_field atau
  2. field_info_instance

Saat Anda membuat bidang melalui UI, Drupal selalu membuat contoh bidang pada entitas / bundel itu.

Jika Anda menambahkan bidang yang ada, data bidang dikloning dan instance bidang dibuat pada entitas / bundel baru.

Terakhir, pengaturan bidang berlaku secara global ke bidang itu, pengaturan instance lapangan dapat bervariasi di antara kumpulan entitas.

David Thomas
sumber
2
Terima kasih banyak, Anda menghilangkan keraguan saya. Jika saya memiliki hak istimewa, saya akan memberi +1 pada pos Anda.
Eugene Gerome