如何在提交事件上覆盖表单的默认值

时间:2010-12-26 22:39:23

标签: drupal

我有一个表单,其中包含指定了默认值的文本字段。在提交事件时,我希望使用我传递的新值集更改这些默认值。我正在使用form_set_value($ element,$ value,$ form_state)。但它没有更新。有任何想法吗?我的代码是

 function sample_myform($form_state){

$form['field']['name'] = array(
'#type' => 'textfield',
'#title'=> 'Name: ',
'#maxlength'=> 127,
   '#default_value' => param1,
);
   $form['field']['placeholder'] = array(
  '#type'=> 'value',
  '#value' => array(),
   );
$form['field']['button1'] = array(
'#type' => 'submit',
'#value' => 'Submit',
);
return $form;
   }

  function sample_myform_validate($form,&$form_state){


$name2 = $form_state['values']['name'];
   form_set_value($form['field']['placeholder'], $name2, $form_state); */
form_set_value($form['field']['name'],'God',$form_state);
$form_state['rebuild'] = true;
 }

1 个答案:

答案 0 :(得分:0)

有一点可以肯定,$ form ['field'] ['placeholder']永远不会因为你设置#value而改变。设置#value后,Form API将继续运行。虽然在#type值上设置了#default_value,但要小心,因为它可以被篡改。你可以做一些像$ form_state ['placeholder'] = $ name2;验证并在表单构建器函数中使用它。

你尝试使用名称在Drupal 7中工作但是我怀疑你在Drupal 6中。validate函数覆盖$ form_state ['values']就好了,但是表单重建并没有保留。再次,根据需要保存到$ form_state。