Imposta selezione valore predefinito elenco [chiuso]


16

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.


1
Ho riscontrato lo stesso problema. Il problema era che non stavo eseguendo il rendering del modulo usando drupal_get_form (), ma in qualche altro modo a causa del caso d'uso.
user1750

Ho incontrato la stessa domanda !!!! chi può aiutarmi?
bluesky_still

1
500 dovrebbe essere un '500', la stringa non un numero intero.
Saadlulu,

Risposte:


3

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.


2

Non ho mai visto questo problema. Quel valore predefinito dovrebbe funzionare. Direi di provare a trasformare la chiave in una stringa e impostarla #default_valuecome una stringa. L' #optionsarray può essere passato da array_merge qualche parte, quindi digitando nuovamente 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 il passaggio di tale array array_mergepuò riorganizzare le chiavi di numeri interi in ordine sequenziale:

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

Se ciò accade, la 500chiave semplicemente non esiste. Questo perché array_mergenon gli piace 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_valuepotrebbe essere sovrascritto?


2

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

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

Forse vale anche la pena provare ad aggiungere la 'und'chiave.


1

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


In tal caso, tecnicamente passerà semplicemente il valore di $ options [500], che è (stringa) '500'.
jordojuice,

1
$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.


0

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',
        );  

-1

Ho riscontrato lo stesso problema e ho provato a dare l'indice dell'array che voglio essere il valore predefinito e ha funzionato. La mia risposta è simile ad Ashok KS ma la sua seconda riga non riuscivo a capire.


-1

risolto, dovremmo impostare prima il valore predefinito di quell'array $ option, se lo aggiungessimo per ultimo, la chiave dell'array cambierà [1] => science, [2] => drama, il diritto dovrebbe essere [192] => science, [231 ] => dramma :-)


-1

provare:

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

Per me funziona bene.


-2

L' #default_valuedovrebbe avere di argomenti nella forma come #value.

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

-4

Basta usare

$form['price']['min']['#default_value'] = 2 

il che significa che il valore predefinito prenderà l'opzione 2eme


-5

SOLUZIONE: capire che form_select_options non gestisce #default_valueaffatto. Quindi ho usato #value property:

$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;

2
Le opzioni selezionate hanno un valore predefinito. Inoltre, l'impostazione del #valueparametro renderà impossibile all'utente la modifica del valore.
googletorp

1
Guarda il codice, ho impostato #value su default_value solo se non esiste alcun valore in #value.
breethe

Devi sempre impostare un valore su #valore, o $_REQUEST['price']['min']o $my_default_value. Qualunque cosa tu inserisca nel valore # sarà il valore del campo indipendentemente da ciò che l'utente immette.
googletorp

Se l'utente immette un valore, questo valore viene inviato tramite GET ($ _REQUEST ['price'] ['min']). Quindi, se il valore degli input utente imposto #value sull'input dell'utente, altrimenti #value = $ my_default_value
breethe

Quello è il problema. Gli utenti possono utilizzare la selezione, ma non importa cosa selezionano, il risultato sarà lo stesso.
googletorp
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.