Definir o valor padrão da lista de seleção [fechado]

16

Tenho lista de seleção com opções:

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

Estou tentando definir o valor padrão para 500:

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

Mas isso não funciona.

produzir
fonte
1
Eu tive o mesmo problema. O problema era que eu não estava processando o formulário usando drupal_get_form (), mas de outra maneira por causa do caso de uso.
user1750
Eu encontrei a mesma pergunta !!!! Quem pode me ajudar?
Bluesky_still 6/11/12
1
500 deve ser '500', a sequência não é um número inteiro.
saadlulu

Respostas:

3

Seu código deve funcionar, geralmente use o valor da chave como valor padrão, se não estiver funcionando, faça a string como chaves e use-a como valor padrão.

Ashok KS
fonte
2

Eu nunca vi esse problema. Esse valor padrão deve funcionar. Eu diria que tente fazer da chave uma string e definir #default_valuecomo uma string. A #optionsmatriz pode estar sendo passada por array_merge algum lugar, reaplicando chaves inteiras. Se chaves são strings, isso não deve acontecer. Atualmente, sua matriz fica assim:

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

Mas passar essa matriz array_mergepode reorganizar essas chaves inteiras para estar em ordem seqüencial:

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

Se isso acontecer, a 500chave simplesmente não existe. Isso ocorre porque array_mergenão gosta de preservar chaves inteiras, mas você pode usar cadeias de caracteres para evitá-lo. Então, acho que sua matriz deve se parecer mais com isso:

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

Então você pode definir o seu #default_value:

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

Caso contrário, existe algum outro lugar em que o default_valueitem possa estar sendo substituído?

jordojuice
fonte
2

Você tentou usar uma string em vez de um número inteiro?

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

Talvez também valha a pena tentar adicionar a 'und'chave.

silkAdmin
fonte
1

Você tentou usar a chave fora das opções $ da matriz para definir o valor padrão?
$form['price']['min']['#default_value'] = $options[500];

JurgenR
fonte
Se isso for feito, tecnicamente apenas passará o valor de $ options [500], que é (string) '500'.
precisa saber é o seguinte
1
$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
        );

Para definir o valor padrão na lista de seleção, usamos o parâmetro #default_value. O valor do atributo default_value da lista de seleção seria a chave da matriz da lista de seleção.

Nitesh Sethia
fonte
0

O código a seguir mostrará o campo com seu valor padrão como 500.

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

Eu enfrentei o mesmo problema e tentei dar o índice da matriz que eu quero que seja o valor padrão e funcionou. Minha resposta é semelhante à Ashok KS, mas sua segunda linha eu não conseguia entender.

AgA
fonte
-1

fixo, devemos definir o valor padrão primeiro dessa matriz de opções $, se adicionarmos por último, a chave da matriz mudou [1] => science, [2] => drama, a direita deve ser [192] => science, [231 ] => drama :-)

bluesky_still
fonte
-1

experimentar:

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

É um trabalho bom para mim.

Tasneem
fonte
-2

O #default_valuedeveria ter seus argumentos no formulário como o #value.

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

Apenas use

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

o que significa que o valor padrão usará a opção 2eme

Stevey
fonte
-5

SOLUÇÃO: Descobrir que form_select_options não é compatível#default_value . Então eu usei #value property:

$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;
produzir
fonte
2
As opções selecionadas têm um valor padrão. A configuração do #valueparâmetro também tornará impossível ao usuário alterar o valor.
googletorp
1
Olhe o código, eu defino #value como default_value apenas se não houver nenhum valor em #value.
precisa saber é o seguinte
Você sempre define um valor como #value, $_REQUEST['price']['min']ou $my_default_value. O que você colocar no #value será o valor do campo, independentemente do que o usuário inserir.
googletorp
Se o usuário digitar algum valor, esse valor será enviado por meio de GET ($ _REQUEST ['preço'] ['min']). Então, se as entradas do usuário valorizar I #VALUE conjunto de entrada do usuário, caso contrário #VALUE = $ my_default_value
breethe
Esse é o problema. Os usuários podem usar o select, mas não importa o que eles selecionam, o resultado será o mesmo.
googletorp