it-swarm.it

Imposta selezionare il valore predefinito dell'elenco

Ho un elenco selezionato con opzioni:

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

Sto cercando di impostare il valore predefinito su 500:

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

Ma questo non funziona.

16
breethe

Non ho mai visto questo problema. Quel valore predefinito dovrebbe funzionare. Direi di provare a trasformare la chiave in una stringa e impostare #default_value Come stringa. L'array #options Potrebbe essere passato da qualche parte attraverso array_merge, Riscrivendo così le chiavi intere. Se le chiavi sono stringhe, ciò non dovrebbe accadere. Attualmente, il tuo array è simile al seguente:

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

Ma passare quell'array attraverso array_merge Può riorganizzare quelle chiavi intere in modo che siano in ordine sequenziale:

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

Se ciò accade, il tasto 500 Semplicemente non esiste. Questo perché array_merge Non ama conservare le chiavi intere, ma è possibile utilizzare le stringhe per impedirlo. Quindi, penso che il tuo array dovrebbe assomigliare di più a questo:

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

Quindi puoi impostare il tuo #default_value:

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

Altrimenti, c'è un altro posto in cui default_value Potrebbe essere ignorato?

3
jordojuice

Il tuo codice dovrebbe funzionare, in genere usa il valore chiave come valore predefinito, se non funziona trasforma la stringa come chiave e usala come valore predefinito.

3
Ashok KS

Hai provato a utilizzare una stringa anziché un numero intero?

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

Forse vale anche la pena provare ad aggiungere il tasto 'und'.

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

Per impostare il valore predefinito nell'elenco di selezione utilizziamo il parametro #default_value. Il valore dell'attributo default_value dell'elenco di selezione sarebbe la chiave dell'array dell'elenco di selezione.

1
Nitesh Sethia

Hai provato a utilizzare la chiave fuori dall'array $ opzioni per definire il valore predefinito?
$form['price']['min']['#default_value'] = $options[500];

1
JurgenR

Il codice seguente mostrerà il campo con il suo valore predefinito come 500.

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