2

我试图在用户创建帐户后将其转发到特定页面,但是当他们到达那里时,他们没有登录。

function mymodule_user_insert(&$edit, $account, $category) {
  drupal_goto("node/3");
}

创建帐户后,我是否应该添加一些内容以确保用户登录?

4

2 回答 2

2

hook_user_insert()在将用户帐户插入数据库表后调用,当管理员用户之一从管理页面创建用户帐户或模块以编程方式创建用户帐户时会发生这种情况。
挂钩的目的是保存模块与用户帐户关联的自定义数据。在这种情况下打电话drupal_goto()是错误的。

要在注册后重定向用户,您可以实现类似于以下的代码。(“mymodule”只是模块短名称的一个示例;将其更改为您正在使用/创建的模块的短名称。)

function mymodule_form_ user_register_form_alter(&$form, &$form_state) {
  // Add a form submission handler to the registration form.
  $form['#submit'][] = 'mymodule_user_register_submit';
}

function mymodule_user_register_submit($form, &$form_state) {
  $form_state['redirect'] = 'where you want to redirect the user';
}

考虑到执行此代码时,用户仍然需要登录,并且(取决于站点设置)当设置为首先验证报告的电子邮件地址时,他们可能需要首先接收 Drupal 发送给用户的电子邮件由注册用户。

如果要在登录后重定向用户,则应实现hook_user_login(),但用户需要先登录。

于 2011-08-25T20:30:37.503 回答
0

那不是这样做的地方,因为那应该只用于向数据库发布自定义添加,请参阅此处的文档

最简单的方法是使用登录目标模块,因为它已经过尝试和测试,并且可以满足您的需求。要了解他们是如何做到的,请查看源代码。

http://drupal.org/project/login_destination

或者,您应该将代码添加到hook_user_login

于 2011-08-25T20:30:37.323 回答