我有一个带有注册表格的区块,我需要人们注册并留在同一个页面上,这可能吗?
我尝试了登录目标模块,但该功能似乎只适用于登录而不是注册。注册继续发送到用户个人资料页面。
答案 0 :(得分:3)
正如您在user_register_submit submit handler中看到的那样,$form_state['submit']
是硬编码的。
这意味着user_register_submit将定义目标,除非您覆盖它。
您可以通过添加自己的提交处理程序(伪代码)来实现。
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == "user_register") {
//Look at the code in user_register_submit for all the ifs and switches to only
// add this extra handler when a normal user signs up.
$form['#submit'][] = "_mymodule_user_register_submit";
}
}
function _mymodule_user_register_submit($form, &$form_state) {
$form_state['redirect'] = $_GET['q']; //Adds the current url as redirect.
}
然后,使用系统表中的权重,确保您的模块在用户模块之后启动。否则它们按字母顺序调用,用户模块在mymodule之后;再次重置重定向。
永远不会在提交处理程序中使用drupal_goto()
,因为它们将停止所有处理并重定向用户,导致许多模块失败,甚至经常导致数据库损坏和不一致。