2010-08-20 90 views
1

我试图授予一个特定的角色给订购金额等于或大于100.00€的用户:条件操作将会非常接近成就,但我在操作上失败(PHP要求)。如何在Ubercart中授予特定角色?

如何在Ubercart条件操作中使用PHP操作授予角色?

+0

可能重复:// stackoverflow.com/questions/3533415/how-to-assign-role-with-php-in-drupal) – kiamlaluno 2010-08-24 05:22:47

+0

是的,你是对的,我不记得为什么我在同一天两次提交相同的问题..另一个则受到了更多的关注。 – dag729 2010-08-24 19:53:02

回答

3

基于几个relatedthreads,我想你想沿着以下(代入适当的角色名行#3)行添加一个“执行定制的PHP代码”行动:

if($account) { 
    $uid = $account->uid; 
    $role_name = 'YOUR SPECIFIC ROLE NAME GOES HERE'; 
    $rid = db_result(db_query("SELECT rid FROM {role} WHERE name = '%s'", $role_name)); 

    // Load user object 
    $account = user_load(array('uid' => 1)); 

    // Save the user object with the new roles. 
    if ($account !== FALSE) { 
    $roles = $account->roles + array($rid => $role_name); 
    user_save($account, array('roles' => $roles)); 

    watchdog('user', 'uc ca added role to Ubercart created user'); 
+0

我宁愿建议使用核心'user_multiple_role_edit()'函数:http://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_multiple_role_edit/6,其中'$ accounts '必须是一个uid数组,'$ operation'必须与''add_role''相等,'$ rid'必须等于给定角色的id(你可以通过搜索来发现它user_roles()'的返回值:http://api.drupal.org/api/drupal/modules!user!user.module/function/user_roles/6)。它非常易于使用。 – Sk8erPeter 2012-03-05 21:17:56

3

提供的代码需要关闭两个括号。我放弃了if陈述,一把抓起顺序uid和固定的UID设置(这是“1”):

$uid = $order->uid; 
    $role_name = 'customer'; 
    $rid = db_result(db_query("SELECT rid FROM {role} WHERE name = '%s'", $role_name)); 

    // Load user object 
    $account = user_load(array('uid' => $uid)); 

    // Save the user object with the new roles. 
    $roles = $account->roles + array($rid => $role_name); 
    user_save($account, array('roles' => $roles)); 

    watchdog('user', 'uc ca added role to Ubercart created user'); 
[如何分配与PHP在Drupal的角色?(HTTP的
相关问题