以编程方式将输入插入到drupal表单中

时间:2010-12-17 05:01:26

标签: api drupal forms

如何在drupal表单API中以编程方式填充输入字段? 让我举例说明,请考虑以下示例

function form(){
return drupal_get_form('myform');
}
function myform($form_state){
$form['name'] = array(
'#type' => 'textfield',
'$title' => 'Name: ',
 );
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Save',
 );
 return $form;
}
function myform_submit($form,&$form_state){
$form_id = 'myform';
$form_state['values']['name'] = 'Hello World';
drupal_execute($form_id,$form_state);
}

这里,当发生提交事件时,我没有获取填充的值,而是在屏幕上显示死亡的白色空白屏幕。我的语法有问题吗?

1 个答案:

答案 0 :(得分:0)

这是使用drupal_execute的正确方法。但是,您处理该表单的方式还有其他问题:尝试将提交和验证功能附加到表单。当你这样做时,你还需要将drupal_execute从提交函数中移出(这可能会导致你现在遇到的问题)。如果需要保存数据,则需要使用DB抽象层drupal_write_record或其中一个现有挂钩。

$form_state = array(
  'submitted' => true,
  'values' => array(
    'name' => 'Hello World',
    'op' => t('Save'),
    'submit' => t('Save'),
    'form_id' => 'myform',
  ),
);

drupal_execute('myform', $form_state);