Drupal 7 - 如何创建自定义注册表单

时间:2016-06-03 13:47:45

标签: drupal-7 user-registration drupal-hooks

我是Drupal开发的新手。我想为我网站的访问者创建一个注册表单。默认注册页面只有两个字段:用户名和电子邮件地址。

  1. 如何添加更多字段,例如密码,图片和时区。我还想捕获其他信息 - 出生日期和性别。这两个字段在默认users表中不可用。如何将这些信息与用户帐户绑定?我是否必须创建一个新表并将这些信息放在引用uid user表的users处?如果有可能我如何拉出连接记录?

  2. 我是否有可能为此目的创建新的内容类型但是记录仍然会转到默认的hook_form_alter表并可用于登录?

  3. 如果上面的2不可能,我可能不得不使用user_signup但我应该把这个功能放在哪里?

  4. 创建自定义注册表时,我应使用默认注册页面,即/ user / register并自定义吗?

  5. 如果上述问题看起来非常幼稚和愚蠢,我很抱歉!希望你能考虑我的新手身份。如果可能的话,请帮我逐步解决。

    谢谢!

    更新

    为了完成这项要求,我创建了一个名为user_signup.module的自定义模块,在<?php /* Implements hook_menu() */ function user_signup_menu(){ $items = array(); $items['user/signup'] = array( 'title' => 'Sign Up', 'page callback' => 'drupal_get_form', 'page arguments' => array('user_signup_registration_page'), 'access arguments' => array('access content'), ); return $items; } function user_signup_registration_page($form, &$form_state){ $form['name'] = array( '#title' => 'Username', '#description' => 'choose a username', '#type' => 'textfield', '#required' => TRUE, ); $form['mail'] = array( '#title' => 'Email', '#description' => 'enter a valid email address', '#type' => 'textfield', '#required' => TRUE, ); $form['pass'] = array( '#title' => 'Password', '#description' => 'Enter a strong password', '#type' => 'password', '#required' => TRUE ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Create Account'), ); return $form; } function user_signup_registration_page_submit($form, &$form_state){ $new_user_id = db_insert('users') ->$fields(array( **//this is line number 45** 'name' => $form_state['values']['name'], 'mail' => $form_state['values']['mail'], 'pass' => $form_state['values']['pass'], )) ->execute(); drupal_set_message(t('New user created')); }文件中,我编写了以下代码。

    **//this is line number 45**

    一切都很完美但是当我点击提交按钮时,我收到了这个错误:

      

    致命错误:方法名称必须是第45行的D:\ xampp \ htdocs \ imdbind \ sites \ all \ modules \ user-signup \ user_signup.module中的字符串

    我在上面的代码段中将第45行标记为{{1}}。将我的代码与他们的代码进行比较时,我没有发现任何差异。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您可以在此处添加字段/ admin / config / people / accounts / fields int eh人员帐户设置管理字段表单。

答案 1 :(得分:1)

只需更改第45行即可 从:

    ->$fields(array( **//this is line number 45**

    ->fields(array( **//this is line number 45**