Задать значение списка выбора по умолчанию [закрыто]


16

У меня есть список выбора с параметрами:

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 

Я пытаюсь установить значение по умолчанию 500:

$form['price']['min']['#options'] = $options; 
$form['price']['min']['#default_value'] = 500;

Но это не работает.


1
Я столкнулся с той же проблемой. Проблема была в том, что я не рендерил форму с использованием drupal_get_form (), а каким-то другим способом из-за варианта использования.
user1750

Я встретил тот же вопрос !!!! кто может мне помочь?
bluesky_still

1
500 должно быть '500', строка не целое число.
saadlulu

Ответы:


3

Я никогда не видел эту проблему. Это значение по умолчанию должно работать. Я бы сказал, попробуйте сделать ключ строкой и установить #default_valueв качестве строки. #optionsМассив может быть пропускает через array_merge где - нибудь, таким образом , перепечатывание целого число клавиша. Если ключи являются строками, этого не должно происходить. В настоящее время ваш массив выглядит так:

$options = array(
  0 => '0',
  500 => '500',
  1000 => '1000',
);

Но передача этого массива array_mergeможет реорганизовать эти целочисленные ключи в последовательном порядке:

$options = array(
  0 => '0',
  1 => '500',
  2 => '1000',
);

Если это произойдет, то 500ключ просто не существует. Это потому, array_mergeчто не любит сохранять целочисленные ключи, но вы можете использовать строки, чтобы предотвратить это. Итак, я думаю, что ваш массив должен выглядеть примерно так:

$options = array(
  '0' => '0',
  '500' => '500',
  '1000' => '1000',
);

Затем вы можете установить #default_value:

$form['price']['min']['#default_value'] = '500';

Иначе, есть ли где-нибудь еще, где это default_valueможет быть переопределено?


3

Ваш код должен работать, обычно используйте значение ключа в качестве значения по умолчанию, если он не работает, сделайте строку в качестве ключей и используйте ее в качестве значения по умолчанию.


2

Вы пытались использовать строку вместо целого числа?

$form['price']['min']['#default_value'] = "500"

Может быть, стоит попробовать добавить 'und'ключ.


1

Вы пытались использовать ключ из массива $ options для определения значения по умолчанию?
$form['price']['min']['#default_value'] = $options[500];


Если это будет сделано, технически он просто передаст значение $ options [500], которое (строка) '500'.
jordojuice

1
$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
        );

Чтобы установить значение по умолчанию в списке выбора, мы используем параметр #default_value. Значением атрибута default_value списка выбора будет ключ массива списка выбора.


0

Следующий код покажет поле со значением по умолчанию 500.

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
          '#title' => 'Price',
        );  

-1

Я столкнулся с той же проблемой, и я попытался дать индекс массива, который я хочу быть значением по умолчанию, и это сработало. Мой ответ похож на Ашока К.С., но его вторую строчку я не смог понять.


-1

исправлено, мы должны установить значение по умолчанию первым из этого массива $ option, если мы добавили последний, ключ массива изменился [1] => science, [2] => drama, право должно быть [192] => science, [231 ] => драма :-)


-1

пытаться:

$ form ['price'] ['# default_value'] = 500;

Это хорошо для меня.


-2

#default_valueДолжны иметь свои аргументы в форме , как это #value.

$form['price']['min']['#default_value'] = $options['500'];

-4

Просто используйте

$form['price']['min']['#default_value'] = 2 

Это означает, что значение по умолчанию примет опцию 2eme


-5

РЕШЕНИЕ: выяснить, что form_select_options не обрабатывает #default_valueвообще. Поэтому я использовал #value property:

$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;

2
Выбор параметров имеет значение по умолчанию. Также установка #valueпараметра сделает невозможным изменение значения пользователем.
googletorp

1
Посмотрите на код, я устанавливаю #value в default_value, только если в #value нет никакого значения.
breethe

Вы всегда устанавливаете значение на #value, либо, $_REQUEST['price']['min']либо $my_default_value. Все, что вы введете в #value, будет значением поля независимо от того, что когда-либо вводит пользователь.
googletorp

Если пользователь вводит какое-то значение, это значение отправляется через GET ($ _REQUEST ['price'] ['min']). Поэтому, если пользователь вводит значение, я устанавливаю #value для пользовательского ввода, в противном случае #value = $ my_default_value
breethe

Это проблема. Пользователи могут использовать выбор, но не имеет значения, что они выбирают, результат будет таким же.
googletorp
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.