Drupal 7:允许用户编辑时不保存用户信息

时间:2014-06-13 09:59:00

标签: drupal-7

我目前正在为艺术家组织开发一个新网站。允许管理员角色创建帐户和其他一些节点内容,创建的帐户具有相同的默认角色“artisan”。管理员也是工匠。工匠可以创建和编辑自己的内容。管理员和工匠都应该能够编辑用户配置文件(全部用于管理员,只有他们自己的工匠)。事实是admin可以创建一个用户但是没有人(user1除外)可以在编辑后保存用户配置文件(但它适用于其他节点)。权限已被扫描多次。我一直在寻找没有成功的地方,我错过了什么?我做了很少的更改,我写的唯一相关代码如下:

 <?php
function canardesign_system_form_alter(&$form, &$form_state, $form_id){
global $user;
    switch ($form_id){
    case 'oeuvre_node_form':
            $form['actions']['submit']['#submit'][] = 'canardesign_system_oeuvre_redirect';
                if (in_array('artisan', array_values($user->roles))){
                    $form['field_auteur']['#type']= 'hidden';
                    $form['field_auteur']['und']['#default_value']= $user->uid;
                }
        break;
    case 'user_profile_form':
    if (in_array('artisan', array_values($user->roles))){
            $form['actions']['submit']['#submit'][] = 'canardesign_system_user_profile_form_submit';
        }
        break;
    }
}
function canardesign_system_oeuvre_redirect($form, &$form_state) {
    $type=$form['#node']->type;
    if(isset($type))
    {
         $node = node_load($form_state['nid']);
        $uid=field_get_items('node', $node, 'field_auteur')[0]['target_id'];
        $form_state['redirect'] = 'oeuvres/'.$uid;
    }
  }
function canardesign_system_user_profile_form_submit($form, &$form_state) {
  drupal_goto('artisans');
}
/*default role when administrator (who is artisan as well) creates an account*/
function canardesign_system_user_insert(&$edit, $account, $category) {
    global $user;
    if (in_array('artisan', array_values($user->roles))){
      $account->role = 'artisan';
  }
}
?>

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我不确定这是否是导致问题的原因,但在提交挂钩内调用drupal_goto()肯定是有问题的。它基本上会短缺表格的处理。

这可能会导致阻止执行其他必要代码的问题。

您应该将redirect的{​​{1}}键设置为您希望用户结束的目的地。

表单处理完成后,Drupal会将用户发送到那里。

$form_state