Дополнительные поля при регистрации через
Office — Универсальный личный кабинет, вопрос в том как в нем добавить дополнительные поля при регистрации которые отображались бы в последствии в профиле
Знаю что можно делать таким способом
Понимаю что могу добавить туда доп поля, но как это сделать чтобы записывалось в базу если вызывается процессор auth/create, который в свою очередь работает только с
require MODX_CORE_PATH. 'model/modx/processors/security/user/create.class.php';
Мне получается в $response надо добавить свой элемент верно? Если в чем то не прав, объясните принцип работы.
Заранее благодарен.
Знаю что можно делать таким способом
$userID = $modx->user->get('id');
$user = $modx->getObject('modUser', $userID);
$profile = $user->getOne('Profile');
$extended = $profile->get('extended');
if($extended['myDocuments']==''){
$extended['myDocuments'] = $newResource['id'];
}else{
$extended['myDocuments'] = $extended['myDocuments'].','.$newResource['id'];
};
$profile->set('extended', $extended);
$profile->save();
Вопрос в том что просматривая /core/components/office/controllers/auth.class.php нашел только это $response = $this->office->runProcessor('auth/create', array(
'username' => $username,
'fullname' => $fullname,
'email' => $email,
'active' => false,
'blocked' => false,
'groups' => $this->config['groups'],
));
в функции protected function _createUser($email, $username = '', $password = '', $fullname = '')Понимаю что могу добавить туда доп поля, но как это сделать чтобы записывалось в базу если вызывается процессор auth/create, который в свою очередь работает только с
require MODX_CORE_PATH. 'model/modx/processors/security/user/create.class.php';
Мне получается в $response надо добавить свой элемент верно? Если в чем то не прав, объясните принцип работы.
Заранее благодарен.
Комментарии: 19
Все поля меняются в редактировании профиля.
Регистрация на сайте через Office максимально быстрая — нужен только email.
Регистрация на сайте через Office максимально быстрая — нужен только email.
Мне нужно например добавить тариф в профиль пользователя, как допустим это сделать. При регистрации
При регистрации — никак.
Разве что плагином на сохранение юзера.
Разве что плагином на сохранение юзера.
Спасибо, а не подскажешь в какой файл хоть копать?)
UDP: Вот тут officeAuth
case 'OnUserSave':
if (!empty($user) && !empty($mode) && $mode == 'new') {
if (!$user->get('remote_key')) {
$user->set('remote_key', $user->get('id'));
$user->save();
}
}
break;
UDP: Вот тут officeAuth
case 'OnUserSave':
if (!empty($user) && !empty($mode) && $mode == 'new') {
if (!$user->get('remote_key')) {
$user->set('remote_key', $user->get('id'));
$user->save();
}
}
break;
Просто при регистрации буду использовать свой сниппет, а профилем пользоваться от Office :)
Всем спасибо)
Всем спасибо)
Ну, можно и так.
Василий, а подскажи, я могу при регистрации в office добавить например поле телефон, вроде как стандартное? Или скажи пожалуйста в какую сторону посмотреть. Спасибо!
В сторону добавления input с name=«phone» в форму и разрешения его заполнять в параметре сниппета.
Да поле я именно так и добавил, а вот параметра на разрешение не нашел, в officeAuth его вроде нет. Или я что то не понял.
Сам сниппет я вызываю так
Сам сниппет я вызываю так
[[!officeAuth? loginResourceId=`33` &tplLogin=`tpl.Office.auth.login_my_reg`]]
А, туплю.
При регистрации ничего нельзя, можно при редактировании профиля.
При регистрации ничего нельзя, можно при редактировании профиля.
А, спасибо!!! Буду думать…
Office сделан так, чтобы зарегистрироваться можно было очень быстро, а потом уже требовать всякие нужные данные — в редактировании профиля.
Здравствуйте, Василий. А что делать если нужно добавить капчу или скрытое поле с проверкой на пустоту от спама ботов?
Не нашел для себя ответа нормального потому просто оставлю это здесь:
1) Создаем поле вот такого типа
3) Ищем метод «formRegister», и в ней добавляем поле extended, должно получиться вот так:
1) Создаем поле вот такого типа
<input type="text" name="extended[organization_name]">
2) Ищем файл \core\components\office\controllers\auth.class.php3) Ищем метод «formRegister», и в ней добавляем поле extended, должно получиться вот так:
return $this->_createUser(array(
'username' => $username,
'email' => $email,
'mobilephone' => $mobilephone,
'password' => $password,
'fullname' => $fullname,
'extended' => @json_encode($data['extended']) // вот об этой строке речь
));
4) Дальше ищем метод в том же файле "_createUser" и правим переменную $parramsif (empty($data['extended'])) { // тоже будет не лишним, но добавлять не обязательно
$data['extended'] = '[]';
}
$params = array(
'username' => $data['username'],
'fullname' => $data['fullname'],
'mobilephone' => $data['mobilephone'],
'email' => $data['email'],
'extended' => $data['extended'], // добавляем эту строку
'active' => !$this->modx->getOption('office_auth_activation'),
'blocked' => false,
'groups' => $this->config['groups'],
);
5) Проверяем и радуемся
P.S. Кто-то выше писал, что это невозможно, а оказалось что для счастья нужны лишь две строчки.
Имейте в виду, что во время ближайшего обновления, эти строчки затрутся.
Если я правильно понимаю, для этого нужно принудительно нажать на кнопку «обновить»
ага
Выходит тоже решение, просто не полноценное.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.