web-dev-qa-db-ja.com

選択リストのデフォルト値を設定する

オプション付きの選択リストがあります:

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 

デフォルト値を500に設定しようとしています。

$form['price']['min']['#options'] = $options; 
$form['price']['min']['#default_value'] = 500;

しかし、これは機能しません。

16
breethe

私はこの問題を見たことがありません。そのデフォルト値が機能するはずです。キーを文字列にして#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
jordojuice

コードは機能するはずです。機能しない場合は通常、キー値をデフォルト値として使用します。機能しない場合は、文字列をキーとして作成し、それをデフォルト値として使用します。

3
Ashok KS

整数の代わりに文字列を使用してみましたか?

$form['price']['min']['#default_value'] = "500"

'und'キーを追加してみる価値もあります。

2
silkAdmin
$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
        );

選択リストにデフォルト値を設定するには、#default_valueパラメータを使用します。選択リストのdefault_value属性の値は、選択リスト配列のキーになります。

1
Nitesh Sethia

$ options配列のキーを使用してデフォルト値を定義しようとしましたか?
$form['price']['min']['#default_value'] = $options[500];

1
JurgenR

次のコードは、デフォルト値が500のフィールドを示しています。

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
          '#title' => 'Price',
        );  
0
Aswini K