Drupal 7 - 如何在用户更改该页面上的设置之前将用户重定向到某个页面?

时间:2012-01-03 01:39:06

标签: drupal redirect drupal-7

如何在用户点击网站后,强制Drupal 7将用户重定向到某个页面(包含表单),直到他们填写该表单为止?

例如:Anon用户到达网站,他们可以浏览周围没有问题。 一旦他们登录/注册,我想显示一个页面(带有表单)而不允许 他们去其他任何地方,直到他们填写那个表格。

此解决方案必须使用缓存页面,因此无法使用hook_init()。

此外,解决方案必须检查页面请求是否是实际的表单提交(否则他们将无法提交表单)

任何想法,建议?

1 个答案:

答案 0 :(得分:1)

好的,所以似乎hook_init()是解决方案,问题是由$ user对象引起的。诀窍是,您必须重新加载$ ​​user对象,因为全局不包含字段值。

非常简单的示例代码:

function mymodule_init(){
    global $user;

    if($user->uid && $user->uid != 1){

        $account = user_load($user->uid);
        $account = entity_metadata_wrapper('user', $account);

        $destination = drupal_get_destination();

        if(!$account->field_setup_completed->value()){
            drupal_set_message('Setup incomplete.', 'error');

            if($destination['destination'] != 'setup-page' && $destination['destination'] != 'user/logout'){
                drupal_set_message('Redirecting to setup', 'error');
                drupal_goto('setup-page');
            }
        }
    }
}