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