我需要帮助解决这个问题:
在我的 Drupal 7 站点中,如果登录表单无效,我需要执行重定向到某个页面,仅在这种情况下,并且仅用于登录表单。做这个的最好方式是什么?调用什么函数?提前致谢。
您必须使用hook_form_alter并添加或更改#validate选项。更喜欢第二种方法:
function MYMODULE_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'user_login') {
$form['#validate'][] = 'MYMODULE_user_login_form_validate';
}
}
function MYMODULE_user_login_form_validate($form, &$form_state) {
// Do some validation here. Better take the same codes from the validation functions below.
if (...) {
drupal_goto('CUSTOM_PATH');
}
}
您可以在ROOT/modules/user/user.module文件第 2113 行找到验证函数:
function user_login_default_validators() {
return array('user_login_name_validate', 'user_login_authenticate_validate', 'user_login_final_validate');
}
类似的问题:
使用 hook_user_login 方法可以实现相同的效果,
/**
* Implements hook_user_login();
*/
function MODULE_NAME_user_login(&$edit, $account) {
$url = 'PAGE_TO_BE REDIRECTED';
if (isset($user->uid) && $user->uid > 0) {
drupal_goto($url);
}
}