我需要一个有关如何在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进行重新填充。有什么建议吗?
答案 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);
但是,如果元素#tree为true
,则第一行应为
$form_state['values']['field']['name'] =
db_result(db_query("select name from test2 where id ='$id'"));