ฉันกำลังย้ายโมดูลจาก Drupal 7 ไปยัง Drupal 8 ในการตั้งค่าการกำหนดค่าของโมดูลนี้ฉันต้องได้รับรายการประเภทฟิลด์ที่มีอยู่ในปัจจุบัน
ใน Drupal 7 สิ่งนี้สามารถทำได้โดยใช้field_info_field_types()
ฟังก์ชั่น
ใน Drupal 8 (8.0.0-rc3) ฉันได้รับข้อผิดพลาด "ไม่มีฟังก์ชั่น" แม้จะมีข้อมูลที่ระบุไว้ในหน้าช่วยเหลือการอ้างอิง Drupal APIชัดเจนว่าล้าสมัย
จากนั้นตรวจสอบผมพบว่าหน้า DrupalContribDrupal::service('plugin.manager.entity.field.field_type')->getDefinitions()
ที่ฟังก์ชั่นที่มีการประกาศเลิกใช้และเสนอให้ใช้งานในขณะนี้
แต่การใช้มันทำให้เกิดข้อผิดพลาดอื่น "บริการที่ไม่รู้จัก plugin.manager.entity.field.field_type" โชคดีที่เกี่ยวข้องกับคำแนะนำ "คุณหมายถึง plugin.manager.field.field_type หรือไม่"
ดังนั้นฉันจึงลองใช้Drupal::service('plugin.manager.field.field_type')->getDefinitions()
และว้าว: ฉันได้อาร์เรย์ประเภทฟิลด์ที่คาดหวัง
แต่สมาชิกอาเรย์แต่ละคน (หนึ่งประเภทเขตข้อมูล) ตอนนี้เป็นวัตถุ (แทนที่จะเป็นอาร์เรย์ลูก) และข้อมูลที่ฉันกำลังมองหาอยู่ภายในคุณสมบัติที่มีการป้องกันดังนั้นฉันจึงไม่สามารถเข้าถึงพวกเขาได้
ในขั้นตอนนี้ฉันติดอยู่ ฉันคิดว่ามันอาจมีบางคลาสที่ฉันสามารถขยายเพื่อสำรวจข้อมูลเหล่านี้ได้ แต่ไม่มีโชค: ฉันไม่สามารถคิดได้อย่างชัดเจนว่าส่วนประกอบใดใน Drupal 8 ที่นิยามประเภทฟิลด์เป็นส่วนกลาง