blackseabreathe
@blackseabreathe
brackets

Modx Revo API как разобрать массив получаемых пользователей?

Так я определяю нужную группу пользователей (их всего 4)

$group = $modx->getObject('modUserGroup', array ('id' => '2'));
$users = $group->getMany('UserGroupMembers');

Теперь в массиве $users у нас находятся пользователи из нужной нам группы. Сделал проверку count($users) показало 4 - 4 пользователя в этой группе. Правильно.

Теперь пытаюсь разобрать массив по пользователям.

foreach ($users as $user){

// получаем имя и id пользователя
$name = $user->get('username'); //name
$uid = $user->get('id'); //id

// связь с профилем пользователя
$profile = $user->getOne('Profile');
$isUserBlocked = $profile->get('blocked'); // заблокирован ли юзер
$extendedFields = $profile->get('extended'); // доп поля
$age = $extendedFields['age']; // возраст получили из доп полей
$unitsAge = $modx->runSnippet("units", array('input' => $age, 'options' => 'год|года|лет')); //компонент units
// выводим данные
if(!preg_match("/(.*?)admin(.*)/iu", $name)){ //не выводим админа
if($isUserBlocked != '1'){ // не выводим заблокированых юзеров
echo '
<div class="usersforu boxs">
<div class="ufuName">'.$name.'</div>
<div class="ufuAge">Возраст: '.$age.' '.$unitsAge.'</div>

...

</div>
';
}
}



//end for each
}

Проблема в том, что не выводится ничего из цикла, ошибок нет. Может как-то по-другому нужно разбирать массив?
  • Вопрос задан
  • 43 просмотра
Решения вопроса 1
blackseabreathe
@blackseabreathe Автор вопроса
brackets
Сделал так:

$group = $modx->getObject('modUserGroup', array ('id' => '5'));
$members = $group->getMany('UserGroupMembers');


foreach ($members as $member){
$user = $member->getOne('User'); // важно
// получаем имя пользователя
$name = $user->get('username');
$uid = $user->get('id');
// связь с профилем пользователя
$profile = $user->getOne('Profile');

....

}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Shev_Art_V
@Shev_Art_V
Занимаюсь разработкой сайтов на Modx Revolution
Всё очень просто, $user это не тот объект, который вы ожидаете. Объект UserGroupMembers связан с объектом modUser по полю member, соответственно надо делать так
foreach ($users as $user){

// получаем id пользователя
$uid = $user->get('member'); 
// получаем объект пользователя
$user = $modx->getObject('modUser', $uid);
// получаем имя пользователя
$name = $user->get('username');
// получаем профиль пользователя
$profile = $user->getOne('Profile');
/****тут остальной код*****/
//end for each
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы