Diferença entre $ form_state ['values'] e $ form_state ['input']


24

Alguém pode me dizer a diferença entre essas duas variáveis?

$form_state['values']
$form_state['input']

Opcionalmente, algum exemplo de ação com o qual eles são usados. Estou me perguntando especialmente sobre o uso com ajax na forma drupal. Qual destes devo usar no retorno de chamada ajax para obter valores de entrada do formulário?

Respostas:


27

A diferença crucial aqui é que, na maioria dos casos, você deve usar $ form_state ['values']; desde que os dados na matriz $ form_state ['input'] sejam brutos e não validados.

$ form_state ['input'] é útil para formulários de várias etapas, supondo que você esteja familiarizado com como lidar com segurança com entradas brutas .... Consulte form_builder para obter mais informações ...


1

A menos que você saiba o que está fazendo, $form_state['values']são os valores do formulário processado. $form_state['input']são os dados brutos. Veja o código para form_builder: https: //api.drupal.org/api ....


0

Em 99,9% dos casos, $form_state['values']e $form_state['input']são idênticos.

Mas - tenha cuidado com uma parte do 1%, principalmente ao usar o campo date_popup , pois sua entrada é armazenada em 'input', mas NÃO na matriz 'values'.


0

$form_state['values']deve ser usado na maioria dos casos como $form_state['input']manter o valor bruto e invalidado. Também nos $form_state['values']valores padrão são passados ​​quando o envio do formulário falha, mas no caso de $form_state['input']NULL é passado.


-4

Na função drupal_form_submit , você pode ver o seguinte código:

// Populate $form_state['input'] with the submitted values before retrieving
// the form, to be consistent with what drupal_build_form() does for
// non-programmatic submissions (form builder functions may expect it to be
// there).
$form_state['input'] = $form_state['values'];

Então é exatamente o mesmo.


4
Acima função é usada para programaticamente enviar o formulário ... Ele não responde OP Pergunta ..
Anil Sagar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.