Работа с пользователями через 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, гита.
Истории из жизни айти и обсуждение кода.
Истории из жизни айти и обсуждение кода.