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.