ความแตกต่างระหว่าง $ form_state ['values'] และ $ form_state ['input']


24

ใครช่วยเล่าความแตกต่างระหว่างตัวแปรสองตัวนี้ให้ฉันได้บ้าง

$form_state['values']
$form_state['input']

อีกทางเลือกหนึ่งตัวอย่างของการกระทำที่พวกเขาใช้กับ ฉันสงสัยโดยเฉพาะอย่างยิ่งเกี่ยวกับการใช้กับ Ajax ในรูปแบบ drupal ฉันควรใช้สิ่งใดใน ajax callback เพื่อรับค่าอินพุตจากฟอร์ม

คำตอบ:


27

ข้อแตกต่างที่สำคัญคือในกรณีส่วนใหญ่คุณควรใช้ $ form_state ['values']; เนื่องจากข้อมูลในอาร์เรย์ $ form_state ['input'] เป็นข้อมูลดิบและไม่ผ่านการตรวจสอบ

$ form_state ['input'] มีประโยชน์สำหรับรูปแบบหลายขั้นตอนสมมติว่าคุณคุ้นเคยกับวิธีการจัดการอินพุตดิบอย่างปลอดภัย .... ดูform_builderสำหรับข้อมูลเพิ่มเติม ...


1

ถ้าคุณไม่ทราบว่าคุณกำลังทำอะไรอยู่คุณ$form_state['values']เป็นค่าของแบบฟอร์มที่ประมวลผลแล้ว $form_state['input']เป็นข้อมูลดิบ ดูรหัสสำหรับ form_builder: https: //api.drupal.org/api ....


0

ใน 99.9% ของกรณี$form_state['values']และ$form_state['input']เหมือนกัน

แต่ - ระวังส่วนหนึ่งของ 1% โดยเฉพาะเมื่อใช้ฟิลด์date_popupเนื่องจากอินพุตนั้นถูกเก็บไว้ใน 'อินพุต' แต่ไม่ได้อยู่ในอาร์เรย์ 'ค่า'


0

$form_state['values']ควรใช้ในกรณีส่วนใหญ่ที่$form_state['input']เก็บค่าดิบและไม่ถูกต้อง นอกจากนี้ใน$form_state['values']ค่าเริ่มต้นจะถูกส่งผ่านเมื่อการส่งแบบฟอร์มล้มเหลว แต่ในกรณีที่$form_state['input']มีการส่งค่า NULL


-4

ในฟังก์ชั่นdrupal_form_submitคุณสามารถดูรหัสต่อไปนี้:

// Populate $form_state['input'] with the submitted values before retrieving
// the form, to be consistent with what drupal_build_form() does for
// non-programmatic submissions (form builder functions may expect it to be
// there).
$form_state['input'] = $form_state['values'];

ดังนั้นมันจึงเหมือนกันทุกประการ


4
ฟังก์ชั่นด้านบนใช้ในการส่งแบบฟอร์มโดยทางโปรแกรม ... มันไม่ตอบคำถาม OP ..
Anil Sagar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.