getUserGroupsメソッドでグループ名を取得したい

2017年5月10日 at 14:14

お世話になっております。

◆環境情報
# concrete5 Version
Core Version - 8.1.0
# Server Software
Apache/2.4.6 (CentOS) PHP/5.6.30

◆目的
メンバー一覧ページ(http://ドメイン/index.php/members/directory)上でグループ名をリスト内に表示したい。

◆質問
下記は、認証:ユーザーオブジェクトに記載のあるgetUserGroupsメソッドの解説の抜粋となります。

$groups = $u->getUserGroups()

ユーザーオブジェクトが所属する、グループIDをキー、グループ名を値としたグループの連想配列を返します。


こちらではグループIDをキーとした連想配列でグループ名が取得できると記載がございます。
実際に試してみると、確かに連想配列は取得できたのですが、キーと値が共にグループIDとなってしまいました。
何か利用方法で問題ございますでしょうか。

ビュー(/concrete/single_pages/members/directory.php)の記述
<td>
<?php print_r($user->getUserObject()->getUserGroups()); ?>
</td>


画面表示
Array ( [2] => 2 [4] => 4 [9] => 9 [1] => 1 )

タグ:

Re: getUserGroupsメソッドでグループ名を取得したい

2017年5月10日 at 21:05
リンク先は、レガシーバージョン(5.6)での解説ですね。

最新版では、idの配列を返すのが仕様になっています。
http://github.com/concrete5/concrete5/blob/8.1.0/concrete/src/User/User.php#L511-L515

グループのIDが分かれば、グループ名などをPHPで取得することが可能です。
未翻訳なので英語のドキュメントになりますが、こちらご参考まで。

http://documentation.concrete5.org/developers/users-groups/groups/overview
 

Re: getUserGroupsメソッドでグループ名を取得したい

2017年5月11日 at 9:43
ありがとうございます!
ドキュメントのバージョン違い失礼しました。
教えていただいたドキュメントを参考に無事に取得することができました。

ビュー(/concrete/single_pages/members/directory.php)の記述
<?php
$ids = array_keys($user->getUserObject()->getUserGroups());
foreach($ids as $id) {
$group = \Group::getByID($id);
echo $group->getGroupDisplayName() . "<br>";
}
?>


画面表示
登録ユーザー
ゲスト