オプション付きの選択リストがあります:
$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
が上書きされる可能性のある場所は他にありますか?
コードは機能するはずです。機能しない場合は通常、キー値をデフォルト値として使用します。機能しない場合は、文字列をキーとして作成し、それをデフォルト値として使用します。
整数の代わりに文字列を使用してみましたか?
$form['price']['min']['#default_value'] = "500"
'und'
キーを追加してみる価値もあります。
$options = array(0 => '0', 500 => '500', 1000 => '1000');
$form['price'] = array(
'#type' => 'select',
'#options' => $options,
'#default_value' => 500,
);
選択リストにデフォルト値を設定するには、#default_valueパラメータを使用します。選択リストのdefault_value属性の値は、選択リスト配列のキーになります。
$ options配列のキーを使用してデフォルト値を定義しようとしましたか?$form['price']['min']['#default_value'] = $options[500];
次のコードは、デフォルト値が500のフィールドを示しています。
$options = array(0 => '0', 500 => '500', 1000 => '1000');
$form['price'] = array(
'#type' => 'select',
'#options' => $options,
'#default_value' => 500,
'#title' => 'Price',
);