สิ่งที่คุณเห็นคือ Drupal เป็นตัวแทนของเขตข้อมูลในฟอร์ม มันพังลงมาเช่นนี้
- ลูกของอาเรย์ด้านนอก
$form['field_back']['und']
( 'und'
สำหรับ'undefined'
) เป็นภาษาต่าง ๆ ที่ฟิลด์ได้รับการแปล ใน Drupal คุณจะแนะนำให้ใช้LANGUAGE_NONE
สำหรับ'und'
ในรหัส
- เด็ก ๆ ในแต่ละอาเรย์ภาษาเช่น
$form['field_feedback']['und'][0]
เป็นตัวแทนรายการที่แตกต่างกันสำหรับฟิลด์ ตัวอย่างเช่นถ้าข้อมูลมี cardinality ไม่ จำกัด และมีรายการหลายเขตข้อมูลที่พวกเขาจะแสดงเป็น$form['field_feedback']['und'][0]
, $form['field_feedback']['und'][1]
ฯลฯ
- สุดท้ายคุณมีองค์ประกอบเข้าฟอร์ม (s),
$form['field_feedback']['und'][0]['value']
ค่าฟิลด์ของตัวเองเช่น ในกรณีนี้ชื่อคอลัมน์คือvalue
สำหรับเขตข้อมูลอ้างอิงโหนดพิมพ์มันจะเป็นnid
และอื่น ๆ หากเขตข้อมูลมีคอลัมน์ข้อมูลหลายคอลัมน์ที่เชื่อมโยงอยู่คุณจะเห็นเด็ก ๆ เพิ่มขึ้นเช่นกัน เหล่านี้จะถูกแสดงด้วยฟิลด์ข้อความ / เลือกกล่อง / เครื่องมือพิเศษและในที่สุดจะให้ค่าสำหรับฟิลด์
ความจริงที่ว่าชื่อได้ถูกเพิ่มเข้าไปในองค์ประกอบต่าง ๆ ตลอดทั้งลำดับชั้นเป็นเรื่องเล็กน้อยที่จะซื่อสัตย์ ไม่ว่าหัวเรื่องนั้นจะแสดงบนแบบฟอร์มหรือไม่นั้นก็จะเป็นการตั้งค่าเฉพาะของอาเรย์สำหรับการเรนเดอร์ที่แต่ละอัน#title
มีอยู่
ในการเปลี่ยนชื่อเรื่องในวิดเจ็ตแบบฟอร์มที่เกิดขึ้นจริงคุณจะต้องกังวลเกี่ยวกับองค์ประกอบแบบฟอร์มที่ด้านล่างสุดของอาร์เรย์: เช่นองค์ประกอบอินพุตจริง ( $form['field_feedback']['und'][0]['value']
ฯลฯ )
อาจเป็นเรื่องที่น่าสังเกตว่าองค์ประกอบ / วิดเจ็ตที่ใช้สำหรับเขตข้อมูลเฉพาะอาจมีความซับซ้อน หากคุณยังไม่มีคุณควรติดตั้งโมดูล Develและใช้dpm()
ฟังก์ชันเพื่อตรวจสอบ$form
อาร์เรย์ ที่จะแสดงให้คุณเห็นว่าองค์ประกอบที่คุณพยายามจะกำหนดเป้าหมายอยู่ที่ไหนในอาเรย์