Search code examples
phpdrupal-7

It is possible to alter the $form_state['redirect'] of a previous submit callback?


function module_form_alter(&$form, $form_state, $form_id) {
  if($form_id == "user_login"){             
       $form['#submit'][] =  'module_userlogin_callback';          
     }
}

function module_userlogin_callback($form, $form_state){
    global $base_url;
    $current_path = $base_url . '/' .'about';
    $form_state['redirect']=$current_path;
}

Thing is, the original submit callback user_login_submit has already a $form_state['redirect'] to user profile page and i want to alter that and redirect to about page with out overriding the original submit callback function.is it possible?currently $form_state['redirect'] given by me is not working.how can i unset it and redirect to about page?


Solution

  • I had similar issue but I fixed it by writing my form_alter function in template.php, like this:

    your_theme_form_alter(&$form, $form_state, $form_id) {
    if ($form_id == 'user_login') {
             $form['#submit'][] = 'your_theme_userlogin_callback';
        }
    }
    function your_theme_userlogin_callback(&$form, &$form_state) {
       $form_state['redirect'] = '$url';//your redirect url path
    }