Дополнительные поля при регистрации через

Office — Универсальный личный кабинет, вопрос в том как в нем добавить дополнительные поля при регистрации которые отображались бы в последствии в профиле



Знаю что можно делать таким способом

$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 надо добавить свой элемент верно? Если в чем то не прав, объясните принцип работы.

Заранее благодарен.
Максим
15 августа 2014, 13:02
modx.pro
2
4 892
0

Комментарии: 19

Василий Наумкин
15 августа 2014, 17:16
0
Все поля меняются в редактировании профиля.

Регистрация на сайте через Office максимально быстрая — нужен только email.
    Максим
    15 августа 2014, 17:29
    0
    Мне нужно например добавить тариф в профиль пользователя, как допустим это сделать. При регистрации
      Василий Наумкин
      15 августа 2014, 17:45
      0
      При регистрации — никак.

      Разве что плагином на сохранение юзера.
        Максим
        15 августа 2014, 17:47
        0
        Спасибо, а не подскажешь в какой файл хоть копать?)

        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;
    Максим
    15 августа 2014, 19:03
    0
    Просто при регистрации буду использовать свой сниппет, а профилем пользоваться от Office :)

    Всем спасибо)
    Алексей Марченко
    08 января 2015, 16:26
    0
    Василий, а подскажи, я могу при регистрации в office добавить например поле телефон, вроде как стандартное? Или скажи пожалуйста в какую сторону посмотреть. Спасибо!
      Василий Наумкин
      08 января 2015, 16:36
      0
      В сторону добавления input с name=«phone» в форму и разрешения его заполнять в параметре сниппета.
        Алексей Марченко
        08 января 2015, 17:01
        0
        Да поле я именно так и добавил, а вот параметра на разрешение не нашел, в officeAuth его вроде нет. Или я что то не понял.

        Сам сниппет я вызываю так
        [[!officeAuth? loginResourceId=`33`  &tplLogin=`tpl.Office.auth.login_my_reg`]]
          Василий Наумкин
          08 января 2015, 17:03
          0
          А, туплю.

          При регистрации ничего нельзя, можно при редактировании профиля.
            Алексей Марченко
            08 января 2015, 17:04
            0
            А, спасибо!!! Буду думать…
              Василий Наумкин
              08 января 2015, 17:08
              +1
              Office сделан так, чтобы зарегистрироваться можно было очень быстро, а потом уже требовать всякие нужные данные — в редактировании профиля.
                Эрадж Шамс
                06 ноября 2017, 12:14
                +1
                Здравствуйте, Василий. А что делать если нужно добавить капчу или скрытое поле с проверкой на пустоту от спама ботов?
      Мельниченко Сергей
      17 июня 2022, 11:25
      0
      Не нашел для себя ответа нормального потому просто оставлю это здесь:

      1) Создаем поле вот такого типа
      <input type="text" name="extended[organization_name]">
      2) Ищем файл \core\components\office\controllers\auth.class.php
      3) Ищем метод «formRegister», и в ней добавляем поле extended, должно получиться вот так:
      return $this->_createUser(array(
                  'username' => $username,
                  'email' => $email,
                  'mobilephone' => $mobilephone,
                  'password' => $password,
                  'fullname' => $fullname,
                  'extended' => @json_encode($data['extended']) // вот об этой строке речь
              ));
      4) Дальше ищем метод в том же файле "_createUser" и правим переменную $parrams
      if (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) Проверяем и радуемся
        Мельниченко Сергей
        17 июня 2022, 12:09
        0
        P.S. Кто-то выше писал, что это невозможно, а оказалось что для счастья нужны лишь две строчки.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      19