drupal form_execute用于重新填充

时间:2010-12-22 23:15:44

标签: drupal

我需要一个有关如何在drupal_execute($ form_id,$ form_state)的帮助下重新填充表单字段的工作示例。我可以通过更改default_values重新填充,如下所示:

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

function sample_myform_form_alter(&$form,$form_state,$form_id){
if($form_id=='sample_myform'){
    $id  = db_result(db_query("select max(id) from test2"));
    $name  = db_result(db_query("select name from test2 where id ='$id'"));
    $form['field']['name']['#default_value'] = "$name";
    drupal_set_message(t('Name: '.$name." id: ".$id));
}
  }

但是,我想使用drupal_execute进行重新填充。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

drupal_execute调用drupal_prepare_form来调用hook_form_alter,所以你应该没问题。另一方面,您可以像$form_state['values']一样传递您的值:

$form_state['values']['name'] =
  db_result(db_query("select name from test2 where id ='$id'"));
drupal_execute('sample_myform', $form_state);

但是,如果元素#treetrue,则第一行应为

$form_state['values']['field']['name'] =
  db_result(db_query("select name from test2 where id ='$id'"));