我有带有选项的选择列表:
$options = array(0 => '0', 500 => '500', 1000 => '1000');
我正在尝试将其默认值设置为500:
$form['price']['min']['#options'] = $options;
$form['price']['min']['#default_value'] = 500;
但这不起作用。
我有带有选项的选择列表:
$options = array(0 => '0', 500 => '500', 1000 => '1000');
我正在尝试将其默认值设置为500:
$form['price']['min']['#options'] = $options;
$form['price']['min']['#default_value'] = 500;
但这不起作用。
Answers:
我从来没有见过这个问题。该默认值应该起作用。我会说尝试将密钥设置#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
可能会被覆盖吗?
您是否尝试使用数组$ options中的键来定义默认值?
$form['price']['min']['#default_value'] = $options[500];
$options = array(0 => '0', 500 => '500', 1000 => '1000');
$form['price'] = array(
'#type' => 'select',
'#options' => $options,
'#default_value' => 500,
);
为了在选择列表中设置默认值,我们使用#default_value参数。选择列表的default_value属性的值将是选择列表数组的键。
固定,我们应该在$ option数组的第一个设置默认值,如果最后添加,则数组键更改为[1] => science,[2] => drama,右边应该为[192] => science,[231 ] =>戏剧:-)
本#default_value
应该有它的参数的形式为#value
。
$form['price']['min']['#default_value'] = $options['500'];
解决方案:找出form_select_options根本无法处理#default_value
。所以我用了#value property
:
$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;
#value
参数将使用户无法更改该值。
$_REQUEST['price']['min']
或者$my_default_value
。无论用户输入什么内容,无论您输入#value值是什么,该字段的值都将是该字段的值。