2012-06-28 37 views
5

tôi không thể tìm thấy một giải pháp hoặc ví dụ phù hợp với cái gì đó nên được khá đơn giản: gán một vai một người sử dụng khi tạo ra nó, đây là những gì tôi đang cố gắng:Drupal: gán vai trò trong user_save

$edit = array(
     'name' => $_POST['name'], 
     'pass' => $password, 
     'mail' => $_POST['email'], 
     'status' => 0, 
     'language' => 'es', 
     'init' => $_POST['email'], 
     array(2 =>'authenticated', 4=>'my custom role') //as id and named in role db table 
    ); 

user_save(NULL, $edit); 

Người dùng không được tạo, làm cách nào tôi có thể thực hiện việc này?

Cảm ơn bạn

Trả lời

12

Bạn chưa đặt tên thành viên roles như vậy. Hãy thử phiên bản đã sửa đổi của mình:

$edit = array(
    'name' => $_POST['name'], 
    'pass' => $password, 
    'mail' => $_POST['email'], 
    'status' => 0, 
    'language' => 'es', 
    'init' => $_POST['email'], 
    'roles' => array(
    2 => 'authenticated', 
    4 => 'my custom role', 
), 
); 

user_save(NULL, $edit); 
+0

:-) ngớ ngẩn tôi !!! –

5

Và bạn có thể sử dụng các đối tượng để thực hiện điều đó.

// Check if user's email is unique 
if (!user_load_by_mail($_POST['email'])) { 
    $account = new stdClass; 
    $account->name = $_POST['name']; 
    $account->pass = user_hash_password($password); 
    $account->mail = $_POST['email']; 
    $account->status = FALSE; 
    $account->language = 'es'; 
    $account->init = $_POST['email']; 
    $account->roles = array(
    DRUPAL_AUTHENTICATED_RID => TRUE, 
    'Your custom role' => TRUE, 
); 
    user_save($account); 
} 
0

Dưới đây là một cái móc tôi đã viết thêm một vai trò cho một người dùng khi người dùng mới được chèn vào:

<?php 
function MYMODULE_user_insert(&$edit, $account, $category){ 
    if (array_key_exists('profile_1', $account)) { 
    $is_university = FALSE; 
    if ($account->profile_sport_club['field_club']['und'][0]['value'] == 1) { 
     $is_university = TRUE; 
    } 
    if ($is_university) { 
     $uid = $account->uid; 
     $role_name = 'uni_club'; 
     if ($role = user_role_load_by_name($role_name)) { 
     user_multiple_role_edit(array($uid), 'add_role', $role->rid); 
     } 
    } 
    } 
} 
?> 

Nhờ this tip, nó bây giờ đơn giản hơn nhiều.

0
function first_user_insert(&$edit, $account, $category, $node){ 
    $uid = $account->uid; 
    $role_name = 'role name'; 
    if ($role = user_role_load_by_name($role_name)) { 
    user_multiple_role_edit(array($uid), 'add_role', $role->rid); 
    } 
} 
+0

Mã sửa đổi –

+1

Trong khi mã này có thể phục vụ để trả lời câu hỏi, nó sẽ hữu ích nếu bình luận được thêm vào mô tả chính xác mã nào và cách mã nên được tích hợp với mã trong câu hỏi. Điều này sẽ giúp những người khác trong tương lai gặp phải câu hỏi và câu trả lời này. –

Các vấn đề liên quan