Встановити значення вибору за замовчуванням у списку [закрито]


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 (), а якимось іншим способом через випадок використання.
користувач1750

Я зустрів те саме питання !!!! хто може мені допомогти?
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

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


Якщо це буде зроблено, він технічно просто передасть значення $ options [500], що є (string) '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 списку select буде ключ масиву списку select.


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] => наука, [2] => драма, право має бути [192] => наука, [231 ] => драма :-)



-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.