【问题标题】:Silently create a user account when another form is submitted提交另一个表单时静默创建用户帐户
【发布时间】:2010-08-31 10:45:08
【问题描述】:

我有一个从另一个模块创建的表单。我想在该表单中添加 2 个字段:1. 电子邮件,2. 密码。我想我可以用 hook_form_alter 做到这一点。然后我想创建一个用户帐户并在单击提交按钮时登录用户,然后继续执行表单定义的操作。

原始表单没有#submit 属性...它只有一个#action 属性。

我像这样添加#submit 属性:$form['#submit'] = array('accesscustom_submit');

但是 accesscustom_submit 似乎没有被调用。我认为表单只是被重定向到已经定义的#action url。有什么想法吗?

【问题讨论】:

    标签: drupal drupal-6 form-alter


    【解决方案1】:

    您是否正在尝试编辑评论表单? $form['#action'] 是一个非常罕见的属性......评论表单是我能想到的唯一使用它的属性。

    无论如何,您都可以通过设置用户数组 ($account = array('name' => $username, 'pass' => $pass)) 并将其发送到 user_save 来轻松创建帐户。详情请见http://api.drupal.org/api/function/user_save/6

    创建帐户后,您可以致电user_external_login 登录(http://api.drupal.org/api/function/user_external_login/6

    【讨论】:

    • 您好,谢谢。我创建了用户帐户,效果很好。现在的问题是“#action”属性。它被调用而不是提交(我能够通过删除'#action'来创建用户帐户 - 只是测试,但最终我需要把它放回去)。所以'#action'被调用而不是'#submit'。无论如何我可以更改顺序,以便首先调用'#submit',然后调用'#action'?谢谢!
    • 您需要编辑#action 指向的页面,或者使用您自己的页面覆盖#action,该页面执行相同的操作并添加您的自定义代码。你想修改什么形式?可能有更简单的方法。
    • 我正在尝试修改捐款表格。它有一个这样的 url:donate/%(其中 % 替换为要捐赠的人的 nodeid)。所以 donate/20 是捐赠给第 20 个人。它是一个简单的表单,包含以下字段:货币和金额。我正在添加用户名/密码/名字/姓氏/电子邮件......所以我可以收集有关捐赠者的一些信息。我尝试将“#action”放在“#submit”中,但这没有用。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-01-21
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多