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

16

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

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

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

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

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

breethe
источник
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может быть переопределено?

jordojuice
источник
3

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

Ашок К.С.
источник
2

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

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

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

silkAdmin
источник
1

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

JurgenR
источник
Если это будет сделано, технически он просто передаст значение $ 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

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

AGA
источник
-1

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

bluesky_still
источник
-1

пытаться:

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

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

Tasneem
источник
-2

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

$form['price']['min']['#default_value'] = $options['500'];
bluesky_still
источник
-4

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

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

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

stevey
источник
-5

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

$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;
breethe
источник
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