ความแตกต่างระหว่างฟิลด์และอินสแตนซ์ฟิลด์


15

เมื่อเราไปที่พา ธ/admin/structure/types/manage/article/fieldsและใช้Add new fieldตัวเลือกหรือAdd existing fieldตัวเลือกนั่นสร้างฟิลด์สร้างอินสแตนซ์ของฟิลด์หรือแนบอินสแตนซ์ของฟิลด์หรือไม่ วิธีการแยกความแตกต่างระหว่างพวกเขา? ดังนั้นโดยทางโปรแกรมเมื่อจะใช้field_create_field , field_create_instanceและ field_attach API

ในเอกสาร API ฟิลด์จะกล่าวถึง UI ของผู้ดูแลระบบเท่านั้นและไม่เคยพูดถึงเส้นทางที่จะสร้างทั้งฟิลด์และอินสแตนซ์ของฟิลด์ ดังนั้นมันจึงสับสน ฉันไม่รู้ด้วยซ้ำว่าฉันเป็นคนทำอะไร


สิ่งนี้ควรทำให้เข้าใจได้ยาก: dikini.net/31.08.2010/…
Clive

และในกรณีปกติแต่ละเขตข้อมูลที่คุณเพิ่มจะสร้างเขตข้อมูลใหม่ในฐานข้อมูลและเมื่อคุณเพิ่มเขตข้อมูลที่มีอยู่จะไม่สร้างตารางใหม่เพียงเพิ่มเขตข้อมูลลงในตารางที่มีอยู่
Mohammed Shameem

1
@ Mohammed Shameem ขอบคุณมาก ๆ กรณีการใช้งานคืออะไร? หรือว่าเราจะใช้มันในความเป็นจริงที่ไหน?
ยูจีนเจอ

1
มันจะเป็นการดีกว่าถ้าจะใช้อินสแตนซ์ของเขตข้อมูลเดียวกันถ้าจุดประสงค์หรือฟังก์ชั่นนั้นเหมือนกัน ตัวอย่างเช่นคุณมีเนื้อหาประเภทอื่นที่มีคำศัพท์ทางอนุกรมวิธานเดียวกันที่จะเพิ่มในทั้งหมด มันจะเป็นการดีกว่าถ้าจะเพิ่มเขตข้อมูลเดียวกันให้กับประเภทเนื้อหาทั้งหมดแทนที่จะสร้างเขตข้อมูลที่แตกต่างให้กับแต่ละประเภทเนื้อหา ภายในนี้จะลดจำนวนการสร้างตารางโดย drupal และการค้นหาคำศัพท์จะดีขึ้น
Mohammed Shameem

1
ดังนั้นฟิลด์ที่เราเห็นที่ path node/add/articleเป็นอินสแตนซ์ของฟิลด์ (ซึ่งถูกใช้ซ้ำในเอนทิตีที่แตกต่างกันหลายประเภท) และเขตข้อมูลที่เส้นทาง/admin/structure/types/manage/article/fieldsเป็นเขตข้อมูล ในฐานข้อมูลผมไม่เห็นตารางเช่นฟิลด์ แต่ตาราง field_data เดียวที่ผมคิดว่าเราได้รับเมื่อครั้งแรกที่เราสร้างสนามที่เส้นทางโดยใช้/admin/structure/types/manage/article/fields field_create_fieldและเป็นตัวอย่างที่แนบมาแล้วมัด (บทความในกรณีนี้) node/add/articleที่เราเห็นในเส้นทาง
ยูจีนเจอ

คำตอบ:


24

เขตข้อมูลเป็นคำจำกัดความพื้นฐานของเขตข้อมูลเอง อินสแตนซ์ของฟิลด์เป็นอินสแตนซ์ของฟิลด์นั้นที่แนบมากับเอนทิตี / บันเดิล

  1. ฟิลด์ถูกสร้างด้วยfield_create_field
  2. อินสแตนซ์ของฟิลด์ที่มีfield_create_instance

ในการตรวจสอบว่ามีฟิลด์หรืออินสแตนซ์อยู่ให้ใช้

  1. field_info_fieldหรือ
  2. field_info_instance

เมื่อคุณสร้างฟิลด์ผ่าน UI Drupal จะสร้างอินสแตนซ์ของฟิลด์บนเอนทิตี / ชุดข้อมูลนั้นเสมอ

หากคุณเพิ่มเขตข้อมูลที่มีอยู่ข้อมูลในเขตข้อมูลจะถูกโคลนและสร้างอินสแตนซ์ของเขตข้อมูลบนเอนทิตี / กลุ่มใหม่

ท้ายสุดการตั้งค่าฟิลด์จะมีผลกับทั้งฟิลด์นั้นการตั้งค่าอินสแตนซ์ของฟิลด์อาจแตกต่างกันไป


2
ขอบคุณมากคุณลบล้างข้อสงสัยของฉัน ถ้าฉันมีสิทธิ์ฉันจะ +1 โพสต์ของคุณ
ยูจีนเจอ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.