オプション付きの選択リストがあります:
$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;
しかし、これは機能しません。
回答:
私はこの問題を見たことがない。そのデフォルト値は機能するはずです。キーを文字列にし#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オーバーライドされる可能性のある他の場所はありますか?
修正、その$ 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に入力するものはすべて、ユーザーが入力した内容に関係なく、フィールドの値になります。