3

Joomla 2.5 サイトで、登録済みユーザーがフォームに入力した後、そのユーザーを別のグループに割り当てたいと考えています。ユーザーは、保存時に実行する PHP スクリプトを追加できるように、Fabrik で作成されるフォームに入力するとログインします。私のphpスキルは初歩的です。現在のユーザーをグループに追加する php の行はどのようになりますか?

4

5 に答える 5

4

JUserHelper::setUserGroupsを使用して、ユーザーのグループを設定できます。

現在のユーザーを取得するには、JFactory::getUserを使用できます。

ユーザーがいる場合は、おそらくすぐにIDを取得できます(これは確認していません)。うまくいけば途中であなたを得るいくつかのテストされていないコード:

 $user = JFactory::getUser();
 $userId = $user->id;
 JUserHelper::setUserGroups($userId, 3);

または要するに:

 JUserHelper::setUserGroups(JFactory::getUser()->id, 3); // 3 Is the group number

table-prefix_usergroupsテーブルにアクセスして主キーを取得することで、グループ ID を見つけることができます。データベースにアクセスせずにグループのリストを取得する方法は見つかりませんでしたが、これが役立つ場合があります。

ユーザーグループを含む私の(編集されていない)データベースのスクリーンショット:

ユーザーグループ joomla 2.5

于 2012-11-21T16:26:47.773 に答える
2

JUserHelper::setUserGroups メソッドは Joomla 3.3.1 のインストールで常に失敗するため、ここでは別のアプローチを使用しました。

$user = JFactory::getUser();//get current user
$g = array('2'=>2,'3'=>3);//2 for registered user, 3 for author
$user->groups = $g;
$user->save();
于 2014-08-27T14:19:58.100 に答える
1

addUserToGroupメソッドも参照することをお勧めします(Joomla Platform 11.1 以降)。

JUserHelper::addUserToGroup (JFactory::getUser()->id, 3); // 3 Is the group number

たとえば、ユーザーが以前に「登録済み」グループ (id=2) に属していた場合、この後、ユーザーはグループ 3 にも割り当てられます。

同様に、逆のremoveUserFromGroupメソッドもあります。

ドキュメントによると、setUserGroupsメソッドはグループの配列をサポートしているのに対し、ここで言及する他の 2 つのメソッドは整数をサポートしていることに注意してください。

setUserGroups(integer $userId, array $groups) : boolean

addUserToGroup(integer $userId, integer $groupId) : ブール値

removeUserFromGroup(integer $userId, integer $groupId) : ブール値

https://api.joomla.org/cms-3/classes/JUserHelper.html

于 2016-01-28T20:54:34.390 に答える
0

joomla 3 でこれを行う便利な方法を見つけることができなかったので、これを機能させる必要がある人のための簡単な方法を次に示します。

$db = JFactory::getDbo();
$db->setQuery("replace into xo6uf_user_usergroup_map values ($user_id, $group_id)");
$db->query();
于 2014-08-28T19:01:52.570 に答える