Establecer el valor predeterminado de la lista de selección [cerrado]

16

Tengo una lista selecta con opciones:

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

Estoy tratando de establecer su valor predeterminado en 500:

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

Pero esto no funciona.

Breethe
fuente
1
Me encontré con el mismo problema. El problema era que no estaba renderizando el formulario usando drupal_get_form (), sino de alguna otra manera debido al caso de uso.
user1750
Me encontré con la misma pregunta !!!! ¿Quién me puede ayudar?
bluesky_still
1
500 debe ser un '500', la cadena no es un número entero.
saadlulu

Respuestas:

3

Su código debe funcionar, generalmente use el valor clave como valor predeterminado, si no funciona, haga la cadena como claves y úsela como valor predeterminado.

Ashok KS
fuente
2

Nunca he visto este problema. Ese valor predeterminado debería funcionar. Yo diría que intente convertir la clave en una cadena y establecerla #default_valuecomo una cadena. La #optionsmatriz se puede pasar a array_merge algún lado, volviendo a escribir claves enteras. Si las claves son cadenas, entonces eso no debería suceder. Actualmente, su matriz se ve así:

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

Pero pasar esa matriz array_mergepuede reorganizar esas teclas enteras para que estén en orden secuencial:

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

Si eso sucede, la 500clave simplemente no existe. Esto se debe a que array_mergeno le gusta conservar las claves de enteros, pero puede usar cadenas para evitarlo. Entonces, creo que su matriz debería verse más así:

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

Entonces puedes configurar tu #default_value:

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

De lo contrario, ¿hay algún otro lugar donde default_valuese pueda anular?

jordojuice
fuente
2

¿Intentaste usar una cadena en lugar de un entero?

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

Quizás también valga la pena intentar agregar la 'und'clave.

sedaadmin
fuente
1

¿Intentó usar la clave fuera de la matriz $ options para definir el valor predeterminado?
$form['price']['min']['#default_value'] = $options[500];

JurgenR
fuente
Si se hace eso, técnicamente solo pasará el valor de $ opciones [500], que es (cadena) '500'.
jordojuice
1
$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
        );

Para establecer el valor predeterminado en la lista de selección, utilizamos el parámetro #default_value. El valor del atributo default_value de la lista de selección sería la clave de la matriz de la lista de selección.

Nitesh Sethia
fuente
0

El siguiente código mostrará el campo con su valor predeterminado como 500.

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

Me enfrenté al mismo problema e intenté dar el índice de la matriz que quiero que sea el valor predeterminado y funcionó. Mi respuesta es similar a Ashok KS, pero su segunda línea no pude entender.

AgA
fuente
-1

arreglado, deberíamos establecer el valor predeterminado primero de esa matriz de $ opciones, si agregamos la última, la clave de matriz cambió [1] => ciencia, [2] => drama, la derecha debería ser [192] => ciencia, [231 ] => drama :-)

bluesky_still
fuente
-1

tratar:

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

Es un buen trabajo para mí.

Tasneem
fuente
-2

El #default_valuedebería tener sus argumentos en la forma como #value.

$form['price']['min']['#default_value'] = $options['500'];
bluesky_still
fuente
-4

Solo usa

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

lo que significa que el valor predeterminado tomará la opción 2eme

stevey
fuente
-5

SOLUCIÓN: Descubre que form_select_options no maneja #default_valueen absoluto. Entonces usé #value property:

$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;
Breethe
fuente
2
Las opciones de selección tienen un valor predeterminado. También establecer el parámetro #valuehará imposible que el usuario cambie el valor.
googletorp
1
Mire el código, configuro #value en default_value solo si no hay ningún valor en #value.
Breethe
Siempre establece un valor en #value, ya sea $_REQUEST['price']['min']o $my_default_value. Lo que ponga en el #valor será el valor del campo, independientemente de lo que ingrese el usuario.
googletorp
Si el usuario ingresa algún valor, este valor se envía a través de GET ($ _REQUEST ['precio'] ['min']). Entonces, si el usuario ingresa el valor, configuro #value en la entrada del usuario, de lo contrario #value = $ my_default_value
salude el
Ese es el problema. Los usuarios pueden usar select, pero no importa lo que seleccionen, el resultado será el mismo.
googletorp