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.


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.


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?


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.


1

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


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.


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

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


-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 :-)


-1

tratar:

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

Es un buen trabajo para mí.


-2

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

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

-4

Solo usa

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

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


-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;

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.