Drupal Studs帮助我使用我的form_alter钩子(我几乎在那里)

时间:2010-06-10 19:29:59

标签: drupal drupal-6 drupal-fapi

所以我认为我几乎在概念上存在但需要一些缺失的指针。

目标是在普通用户注册表单中添加一些字段,稍微设置样式,然后通过在表格中存储额外字段来提交它。

这是我到目前为止所拥有的。有人可以给我最后的轻推,让我去。请帮我。另外,我如何应用一些小样式,如对齐新表单字段?

非常感谢!!!!!!!!!

  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!'); } }

2 个答案:

答案 0 :(得分:1)

我建议您在推出自己的解决方案之前先查看内容配置文件模块。

您可以为学校注册定义自定义内容类型(节点),添加cck字段,然后将其激活为内容配置文件。在内容配置文件设置上,然后在用户注册表单上激活它。零码!

答案 1 :(得分:1)

RedBen是对的,content profile可能是更好的解决方案。

看起来你正在以一种奇怪的方式添加第二个提交处理程序 - 它只是一个函数的名称,而不是一个数组。你检查过你的提交处理程序是否正在运行?

因为对处理程序的引用是一个简单的字符串,所以你只需要使用

将它附加到数组中

$form['#submit'][] = '_module_registration_submit'

如果您需要在标准处理程序之前运行它,请使用array_unshift将其推送到#submit数组的开头。

相关问题