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

Drupal 如何在提交事件中覆盖表单的默认值,drupal,Drupal,我有一个表单,其中包含指定了默认值的文本字段。在submit事件中,我希望这些默认值用我传递的新值集更改。我使用form_set_value($element,$value,$form_state)来实现这一点。但是,它没有更新。有什么想法吗?我的代码是 function sample_myform($form_state){ $form['field']['name'] = array( '#type' => 'textfield', '#title'=> 'Name: ',

我有一个表单,其中包含指定了默认值的文本字段。在submit事件中,我希望这些默认值用我传递的新值集更改。我使用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;
 }

有一点可以肯定,$form['field']['placeholder']在您设置#value之后永远不会改变。一旦设置了#值,表单API就会继续。但是要小心,在#类型值上只设置#default#u值,因为这可能会被篡改。您可以执行类似$form_state['placeholder']=$name2;在中验证并在表单生成器函数中使用


在Drupal7中,您尝试使用name所做的工作是有效的,但我怀疑您在Drupal6中。validate函数可以很好地覆盖$form_state['values'],但在表单重建中不会持久化。再次,根据需要保存到$form\u state。

尝试将$form\u state作为引用sample\u myform(&$form\u state)传递,看看会发生什么:)我传递了sample\u myform(&$form\u state)。但默认值仍然存在:(