Работа с пользователями через Modx API
апрель
27
, 2015
Рассматриваем базовые приемы работы с пользователями Modx, получение их списка, создание новых, редактирование, extended-параметры
В этой небольшой заметке я приведу код, который получает список пользователей Modx, создает нового пользователя и добавляет ему extended-параметры. Extended-параметры - это обычная json-строка, где мы можем хранить любые данные пользователя, если не хватает штатных полей Modx. В нашем случае это будет числовой user_id и логическое поле checked. Это может понадобиться, например, при создании личного кабинета на сайте.
Получение списка пользователей
// Получаем список пользователей
$query = $modx->newQuery('modUser');
$users = $modx->getCollection('modUser',$query);
Выводим общее количество пользователей
echo sprintf('total count = %s
', count($users));
foreach($users as $i => $user) {
// Выводим id и имя пользователя
$id = $user->id;
$username = $user->username;
echo sprintf('
%s - %s
', $username, $id);
$profile = $user->getOne('Profile');
// Получаем дополнительные поля
$fields = $profile->get('extended');
// Если поле не назначено
if(is_null($fields['user_id'])) {
$fields['user_id'] = 10;
$fields['checked'] = true;
// Задаем нужные значения и сохраняем их
$profile->set('extended', $fields);
$profile->save();
}
}
Добавление нового пользователя
$username = 'test_user';
// Количество пользователей с таким именем
$count = $modx->getCount('modUser', array('username' => $username));
// Если такого пользователя нет
if($count == 0) {
// Создаем нового с указанным паролем
$user = $modx->newObject('modUser', array('username' => $username));
$user->set('password', '12345678');
$profile = $modx->newObject('modUserProfile');
$user->addOne($profile);
// Назначаем дополнительные поля
$fields = $profile->get('extended');
$fields['user_id'] = 10;
$fields['checked'] = true;
// Сохраняем пользователя
$profile->set('extended', $fields);
$profile->save();
$user->save();
}
Дополнительно: получение текущего пользователя
$user = $modx->getUser();
$username = $user->username;
Поиск пользователя по имени
$user = $modx->getObject('modUser', array('username' => 'name_our_user'));
Вывод имени пользователя через плейхолдер
[ [+modx.user.id:userinfo=`username`] ]
Заходите в группу в контакте -
https://vk.com/webdevkin
Анонсы статей, обсуждения интернет-магазинов, vue, фронтенда, php, гита.
Истории из жизни айти и обсуждение кода.
Истории из жизни айти и обсуждение кода.