ค่าว่าง“ - เลือก -” ไม่ปรากฏขึ้นสำหรับเขตข้อมูลที่เลือกที่มีข้อกำหนดสถานะ


8

เมื่อฉันสร้างกล่องเลือกมาตรฐานโดยใช้แบบฟอร์มการ API Drupal 7 ค่าแรก (ยังเป็นที่หนึ่งที่เลือกบนสด 'ฟอร์มที่ว่างเปล่า') <option selected="selected" value="">- Select -</option>เป็น ค่านี้ไม่ได้ระบุไว้ในคำจำกัดความของแบบฟอร์มและฉันไม่ได้ทำการเปลี่ยนแปลงแบบฟอร์ม (ไม่เป็นไร)

อย่างไรก็ตามเมื่อฉันสร้างกล่องเลือกที่สองที่ขึ้นอยู่กับการใช้ครั้งแรก#statesมันจะไม่มีค่าเริ่มต้นใด ๆ สำหรับรูปแบบที่ซับซ้อนที่มีการขึ้นต่อกันหลายครั้งความไม่สอดคล้องนี้เป็นปัญหา

ตัวอย่างคำจำกัดความของแบบฟอร์มมีดังนี้:

function sb_quickquote_test_form($form, &$form_state, $post=array()) {

  $fields['first_select'] = array(
    '#type'             => 'select',
    '#title'            => 'First select box',
    '#options'          => Array('First', 'Second', 'Third'),
    '#required'         => TRUE,
  );

  $fields['dependent_delect'] = array(
    '#type'             => 'select',
    '#title'            => 'Dependent select box',
    '#options'          => Array('Something', 'Another thing', 'Something else', 'Final thing'),
    '#states'           => Array(
      'visible' => Array('select[name=first_select]' => array('value' => '2')),
      'required' => Array('select[name=first_select]' => array('value' => '2')),
    ),
  );

  $fields['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );
  return $fields;
}

ในตัวอย่างง่ายๆนี้เรามี 2 กล่องที่เลือกและปุ่มส่ง กล่องเลือกสองกล่องจะแสดงเป็น:

 ______________      ________________
| - Select - |v|    | Something    |v|
`--------------'    `----------------'
| - Select -   |    | Something      | <- no empty option
| First        |    | Another thing  |
| Second       |    | Something else |
| Third        |    | Final thing    |
 --------------      ----------------

(เนื่องจากการ#statesตั้งค่ากล่องเลือกที่สองจะปรากฏเฉพาะเมื่อกล่องที่เลือกแรกมีการเลือก "ที่สาม")

ความไม่สอดคล้องกันนี้ทำให้เกิดปัญหาในสถานการณ์ที่เรากำลังสร้างรูปแบบไดนามิกที่ซับซ้อนด้วยเขตข้อมูลขึ้นอยู่กับ

ไม่มีใครมีความคิดว่าทำไมเขตข้อมูลจึงได้รับตัวเลือกที่ไม่สอดคล้องกันและวิธีการที่ดีที่สุดในการแก้ไขปัญหาคืออะไร

คำตอบ:


20

หากต้องการบังคับ "ตัวเลือกที่ว่างเปล่า" ให้กำหนดด้วยตัวเลือกดังนี้:

"#empty_option"=>t('- Select -'),

ขอบคุณสำหรับคำตอบ. ฉันไม่ได้ตั้งค่า Drupal ที่ใดก็ได้เพื่อตรวจสอบเรื่องนี้ดังนั้นฉันจะต้องใช้คำพูดของคุณมันและคอยดูคะแนนจากคนอื่น ๆ !
adamnfish

การแก้ไขนี้ใช้ได้กับ Drupal 8
Scott Joudry

2

คุณต้องเปลี่ยนสิ่งนี้:

 'visible' => Array('select[name=first_select]' => array('value' => '2')),
 'required' => Array('select[name=first_select]' => array('value' => '2')),

เลือกเพื่อ: อินพุต

รหัสที่ถูกต้องคือ:

 'visible' => Array(':input[name="first_select"]' => array('value' => '2')),
 'required' => Array(':input[name="first_select"]' => array('value' => '2')),

1

เพื่อขยายคำตอบ doterobcn คุณยังสามารถตั้งค่าว่างเปล่า (ปุ่ม) ของตัวเลือกที่ว่างเปล่าของคุณ

ใน Drupal 8:

$form['country'] = [
  '#type' => 'select',
  '#multiple' => FALSE,
  '#title' => t('Country:'),
  '#required' => FALSE,
  '#options' => $countries,
  '#default_value' => 'FR',
  '#empty_option' => t('- None -'),
  '#empty_value' => '_none',
];

ซึ่งจะให้:

<option value="_none">- None -</option>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.