所以我认为我几乎在概念上存在但需要一些缺失的指针。
目标是在普通用户注册表单中添加一些字段,稍微设置样式,然后通过在表格中存储额外字段来提交它。
这是我到目前为止所拥有的。有人可以给我最后的轻推,让我去。请帮我。另外,我如何应用一些小样式,如对齐新表单字段?
非常感谢!!!!!!!!!
function module_menu() {
$items = array();
$items['school/registration'] = array(
'title' => 'Upgraded Registration Form',
'page callback' =>'module_school_register',
'type' => MENU_CALLBACK
);
return $items;
}//end of the function
function module_school_register(){
return drupal_get_form('form_school_register');
}//end of the function
function module_school_form_alter(&$form, $form_state, $form_id)
{
dsm($form_id);
if ($form_id == 'user_registration_form')
{
// modify the "#submit" form property by prepending another submit handler array
$form['#submit'] = array_merge(
array('_module_registration_submit' => array()),
$form['#submit']
);
}
}
function _module_registration_submit($form_id, $form_values) {
// store extra data in different table
}
function module_registration_validate($form, &$form_state)
{
$error=0;
//Validation stuff here, set $error to true if something went wrong, or however u want to do this. Completely up to u in how u set errors.
if ($error)
{
form_set_error('new_field_name', 'AHH SOMETHING WRONG!');
}
}
答案 0 :(得分:1)
我建议您在推出自己的解决方案之前先查看内容配置文件模块。
您可以为学校注册定义自定义内容类型(节点),添加cck字段,然后将其激活为内容配置文件。在内容配置文件设置上,然后在用户注册表单上激活它。零码!
答案 1 :(得分:1)
RedBen是对的,content profile可能是更好的解决方案。
看起来你正在以一种奇怪的方式添加第二个提交处理程序 - 它只是一个函数的名称,而不是一个数组。你检查过你的提交处理程序是否正在运行?
因为对处理程序的引用是一个简单的字符串,所以你只需要使用
将它附加到数组中 $form['#submit'][] = '_module_registration_submit'
如果您需要在标准处理程序之前运行它,请使用array_unshift
将其推送到#submit
数组的开头。