如何在用户点击网站后,强制Drupal 7将用户重定向到某个页面(包含表单),直到他们填写该表单为止?
例如:Anon用户到达网站,他们可以浏览周围没有问题。 一旦他们登录/注册,我想显示一个页面(带有表单)而不允许 他们去其他任何地方,直到他们填写那个表格。
此解决方案必须使用缓存页面,因此无法使用hook_init()。
此外,解决方案必须检查页面请求是否是实际的表单提交(否则他们将无法提交表单) 任何想法,建议?
答案 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');
}
}
}
}