Как убрать дефолтное значение у select используя Forms API?

Главные вкладки

Аватар пользователя hapydoyzer@drupal.org hapydoyzer@drup... 23 сентября 2008 в 9:25

Здравствуйте.

Используя Forms API, я хочу сделать список с одиночным выбором, обязательный, но без дефолтного значения.
Например делаю так:

  $form['test'] = array(
    '#title' => t('Select number'),
    '#type' => 'select',
    '#options' => array (1=>"one",2=>"two",3=>"three"),
    '#default_value' => null,
    '#required' => true,
  );

Но при отображении формы, по дефолту выбирается значение "one".
Как мне сделать, чтобы по умолчанию было выбрано "пустое" значение (или что-то вроде "--выберите число--") и выбор был бы обязательным?

Когда я делал формы с использованием webforms, я просто не устанавливал значение по умолчанию и ставил свойство "required".

Комментарии

Аватар пользователя penexe penexe 23 сентября 2008 в 10:10

$form['test'] = array(
'#title' => t('Select number'),
'#type' => 'select',
'#options' => array (0=>"выбирете число",1=>"one",2=>"two",3=>"three"),
'#default_value' => 0,
'#required' => true,
);

Аватар пользователя hapydoyzer@drupal.org hapydoyzer@drup... 23 сентября 2008 в 15:21

penexe wrote:
$form['test'] = array(
'#title' => t('Select number'),
'#type' => 'select',
'#options' => array (0=>"выбирете число",1=>"one",2=>"two",3=>"three"),
'#default_value' => 0,
'#required' => true,
);

если пользователь забывает выбрать "число", то форма удачно отправляется(не смотря на #required => true), и в результат записывается "выберите число".
значит придётся делать дополнительную валидацию?

Аватар пользователя microB microB 14 августа 2009 в 23:40

Можно сделать так
$form['test'] = array(
'#type' => 'select',
'#options' => array('' => 'Выберите число', 1 => 'Один', 2 => 'Два', 3 => 'Три'),
'#required' => TRUE);

и все будет работать.