เมื่อคุณตั้งค่าฟิลด์เป็นreadonly
เบราว์เซอร์จะล็อคฟิลด์และส่งข้อมูลกลับไปยังเซิร์ฟเวอร์เมื่อส่ง คุณลักษณะอื่น ๆ คือdisabled
ล็อคฟิลด์และไม่ส่งข้อมูลกลับไปที่เซิร์ฟเวอร์
สำหรับทั้งสองกรณีคุณสามารถตั้งค่าให้เหมือนเดิมหลังจากส่ง ดังนั้นแม้เมื่อตั้งค่าเขตข้อมูลเป็นreadonly
หรือdisabled
และผู้ใช้ปรับเปลี่ยน HTML และส่งข้อมูลที่แตกต่างกัน$form_state['values']
จะยังคงไม่เปลี่ยนแปลง
function _build_element_readonly($element, &$form_state) {
$element['value']['#attributes']['readonly'] = 'readonly';
$element['value']['#value'] = isset($element['value']['#default_value'])
? $element['value']['#default_value']
: '';
return $element;
}
โปรดทราบว่าเราตั้งค่า#value
จาก #default_value #default_value เป็นวิธีปกติในการตั้งค่าเริ่มต้นที่โหลดขึ้นเมื่อฟอร์มถูกสร้างขึ้นและ$form_state['values']
จะมี default_value หรือการป้อนข้อมูลของผู้ใช้ เมื่อคุณตั้งค่า#value
อย่างชัดเจนการป้อนข้อมูลผู้ใช้จะถูกละเว้นและ#value
จะถูกใช้
อย่างไรก็ตามฉันแนะนำให้ใช้'#access' => FALSE,
เมื่อซ่อนองค์ประกอบของฟอร์ม มันจะลบองค์ประกอบทั้งหมดโดยที่คุณสามารถใช้ค่าได้
field_permissions
จะง่ายกว่าการทำงานในลักษณะที่สกปรก