オプション付きの選択リストがあります:
$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に入力するものはすべて、ユーザーが入力した内容に関係なく、フィールドの値になります。