设置选择列表默认值


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 2012年

我遇到了同样的问题!!!!谁可以帮助我?
bluesky_still 2012年

1
500应该是'500',字符串不能是整数。
saadlulu 2013年

Answers:


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

我遇到了同样的问题,我尝试给出了我想作为默认值的数组的索引,并且该索引有效。我的答案类似于Ashok KS,但他的第二行我听不懂。


-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中没有任何值时,我才将#value设置为default_value。
breethe 2011年

您总是将值设置为#value,$_REQUEST['price']['min']或者$my_default_value。无论用户输入什么内容,无论您输入#value值是什么,该字段的值都将是该字段的值。
googletorp

如果用户输入一些值,则该值通过GET($ _REQUEST ['price'] ['min'])发送。因此,如果用户输入值,则将#value设置为用户输入,否则#value = $ my_default_value
唤醒2011年

那就是问题所在。用户可以使用选择,但是选择什么都没有关系,结果将是相同的。
googletorp
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.