3

我可以在注册中添加一个额外的字段。我需要知道的是我需要采取什么步骤才能获取该输入并将其插入到drupal的用户表中。下面的代码在我的模块中,它只向表单添加了一个字段,但是当它提交时它不会对数据做任何事情。

function perscriptions_user($op, &$edit, &$account, $category = NULL){
  if ($op == 'register') {
    $form['surgery_address'] = array (
      '#type' => 'textarea',
      '#title' => t('Surgery Address'),
      '#required' => TRUE,
    );      

     return $form;     
  }

  if ($op == 'update') {
    // …
  }
}
4

1 回答 1

7

hook_user() 文档中所述:

$op 正在执行什么样的操作。可能的值(按字母顺序):
- “插入”:正在添加用户帐户。模块应将其对用户对象的自定义添加保存到数据库中,并在 $edit 中将保存的字段设置为 NULL。
- “更新”:正在更改用户帐户。模块应将其对用户对象的自定义添加保存到数据库中,并在 $edit 中将保存的字段设置为 NULL。
- "validate": 用户帐号即将被修改。模块应验证其对用户对象的自定义添加,并根据需要注册错误。

该模块需要在hook_install().

hook_user()可以使用以下代码实现,例如:

function perscriptions_user($op, &$edit, &$account, $category = NULL){
  if ($op == 'register' || ($op == 'form' && $category = 'account')) {
    $form['surgery_address'] = array (
      '#type' => 'textarea',
      '#title' => t('Surgery Address'),
      '#required' => TRUE,
    );

    return $form;     
  }

  if ($op == 'insert' || $op == 'update') {
    prescriptions_save_user_profile($account->uid, $edit['surgery_address']);
  }
  if ($op == 'validate' && $category == 'account') {
    // Verify the entered values are valid.
    // In this example, the value is contained in $edit['surgery_address'].
  }
}

prescriptions_save_user_profile()是将用户配置文件值保存在数据库中的函数。代码检查类别以避免在用户配置文件编辑表单中显示的所有选项卡中显示相同的表单字段。

于 2010-07-27T14:51:38.360 回答