yani

yani

С нами с 20 декабря 2013; Место в рейтинге пользователей: #55
Алексей Марунин
03 декабря 2012, 00:49
1
0
Да, я помню в свое время долго ломал голову, пока не добрался до этого пресловутого 'passwordnotifymethod' :) Сожалею, что не увидел ваш вопрос вовремя. Тем не менее, пару моментов все же отмечу:

Для начала корректно обрабатываем ошибки при регистрации:

// Запускаем стандартный процессор регистрации
$response = $this->modx->runProcessor( 'security/user/create', $options );
if ( $response->isError() ) {
	// Получаем весь набор ошибок (например, не задано имя пользователя, пустой пароль и т.д.)
        $errors = $response->response['errors'];
	foreach ( $errors as $error ) {
		$errorMsg = $error['msg'];
		// Выводим сообщение об ошибке в лог или плейсхолдер
	}
}
else {
	// А здесь все замечательно, получаем массив 
	// с параметрами пользователя (не объект типа modUser!)
	$userArray = $response->getObject();
}


Далее. Добавление в группу при регистрации тоже простое:

// Получаем идентификаторы групп и ролей, используемых по умолчанию
// Группу Registered заменить на нужную (она должна быть заранее создана!)
$group = $this->modx->getObject( 'modUserGroup', array( 'name' => 'Registered' ) ); 
$userGroup = $group->get( 'id' );
$role = $this->modx->getObject( 'modUserGroupRole', array( 'name' => 'Member' ) );
$userRole = $role->get( 'id' );

...
// При вызове процессора обратите внимание на второй параметр - $options.
// В него нужно добавить следующий элемент:
$options['groups'] = array( array( 'usergroup' => $userGroup , 'role' => $userRole ) );
// По аналогии можете созданного пользователя добавлять сразу в несколько групп с различными ролями

Надеюсь, помог :) Ибо сам буквально недавно «варился» в этом очень основательно :)