Nilai kosong "- Pilih -" tidak muncul untuk bidang pilih dengan persyaratan status


8

Ketika saya membuat kotak pilih standar menggunakan Drupal 7 form API, nilai pertama (juga yang dipilih pada 'formulir kosong') adalah <option selected="selected" value="">- Select -</option>. Nilai ini tidak ditentukan dalam definisi bentuk dan saya tidak mengubah bentuk. (Ini baik-baik saja)

Namun, ketika saya membuat kotak pilih kedua yang tergantung pada penggunaan pertama #states, itu tidak memiliki nilai default seperti itu. Untuk bentuk kompleks dengan banyak dependensi, inkonsistensi ini merupakan masalah.

Contoh definisi bentuk adalah sebagai berikut:

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;
}

Dalam contoh sederhana ini, kami memiliki 2 kotak pilih dan tombol kirim. Dua kotak pilih ditampilkan sebagai:

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

(Karena #statespengaturan, kotak pilih kedua hanya muncul ketika kotak pilih pertama memiliki "Ketiga" dipilih)

Ketidakkonsistenan ini menyebabkan masalah dalam situasi di mana kita menghasilkan bentuk dinamis yang kompleks dengan bidang yang saling bergantung.

Adakah yang tahu mengapa ladang diberi opsi yang tidak konsisten dan apa pendekatan terbaik untuk mengatasi masalah tersebut?

Jawaban:


20

Untuk memaksa "opsi kosong", tetapkan dengan sesuatu seperti:

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

Terima kasih atas jawabannya. Saya tidak punya Drupal mengatur di mana saja untuk memeriksa ini jadi saya harus mengambil kata-kata Anda untuk itu dan mengawasi suara dari orang lain!
adamnfish

Perbaikan ini juga berfungsi untuk Drupal 8
Scott Joudry

2

Anda perlu mengubah ini:

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

pilih untuk : input

kode yang benar adalah:

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

1

Untuk memperluas jawaban doterobcn Anda juga dapat mengatur nilai kosong (kunci) dari opsi kosong Anda.

Dalam 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',
];

Yang akan memberi:

<option value="_none">- None -</option>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.