drupal表单实例:生成表单、提交、验证、写入数据库步骤

//test_form函数中定义表单,drupal定义了一些常用格式,文本、下拉、单选、多选、上传等。
function test_form(&$form_state){//传递表单参数
$form['title'] = array(
'#type'=> 'textfield',
'#title' => '主题',
'#default_value' => 11111,//默认值
'#maxlength' => 128,//长度
);
$form['body'] = array(
'#type' => 'textarea',
'#title' => '内容',
'#default_value' => '中华人民共和国',
'#cols' => 40,
'#rows' => 6
);
$form['select'] = array(
'#type' => 'radios',
'#title' => '网站协议',
'#default_value' => 1,
'#options' => array('我同意', '我不同意'),//单选项,若不指定值,则自动从0开始计算: 0 -> 我同意, 1 -> 我不同意。
);
$form['#validate'][] = 'test_form_validate';//调用验证函数
$form['submit'] = array(
'#type' => 'submit',
'#value' => '提交',
'#submit' => array('test_form_submit'),//调用提交函数
);
return $form;
}
function test_form_validate($form, &$form_state) {//接收表单参数
   //验证函数
   //利用$form_state来接收表单传递过来的值,$form_state['values']['select']等于$form['select'].
if($form_state['values']['select']){
form_set_error('select', '你必须同意网站协议。');
   }
if($form_state['values']['title'] == '' && $form_state['values']['body'] == '' ){
form_set_error('title', '标题和正文不能为空。');
}
}
function test_form_submit($form, &$form_state) {//接收表单参数
//利用$form_state来接收表单传递过来的值。执行写入数据库,或者其它操作
db_query('INSERT INTO {test} (title, body) VALUES (%d, %d)', $form_state['values']['title'], $form_state['values']['body']);
}
?>

Drupal调用表单有两种方法,第一种是在页面内直接调用:

print drupal_get_form('test_form');
?>

另一种是在menu里通过url调用,大致如下:

$items['test/form'] = array(
'title' => '表单测试',
'page callback' => 'drupal_get_form',
'page arguments' => array('test_form'),
'type' => MENU_LOCAL_TASK,
);
?>

在表单调用里也可以传递参数,比如:

print drupal_get_form('test_form', $node);
//表单函数上就可以接收到了。
function test_form(&$form_state, $node){//
//.......
?>

你可能感兴趣的:(验证,提交,生成表单,写入数据库步骤,drupal表单实例)