Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Группа пользователя от регистрации в зависимости от значения пользовательского свойства

00 голосов
4
Создал пользовательское свойство типа список

Имеет два значения 1 группа - 4e148c9276c0258c211ba74857737bea, 2 группа - de1e58ea3c4e55c0e0d10707ab90e5c4

В компоненте регистрации вывел это свойство.

если пользователь выбирает 1 значение то 1 группа, если 2 значение то 2 группа.

Но дело в том, что не срабатывает именно действие
Код
$arFields["GROUP_ID"][] =
в условии. Но если в вписать вывод
Код
print_r($arFields);
die();


Все показывается. А вот группа пользователю не присваивается. В чем проблема не пойму.

В init.php код
Код
AddEventHandler("main", "OnAfterUserRegister", "OnAfterUserRegisterAddGroup");

function OnAfterUserRegisterAddGroup(&$arFields)
  {
   if($arFields["USER_ID"]>0) {
        $rsUser = CUser::GetList($by, $order,
           array(
              "ID" => $arFields["USER_ID"],
              ),
           array(
              "SELECT" => array(
              "UF_GROUP_USER",
              ),
           )
        );
        $arUser = $rsUser->Fetch();
        $rsEnum = CUserFieldEnum::GetList(
           array(),
           array(
           "ID" => $arUser["UF_GROUP_USER"],
              )
           );
        $arEnum = $rsEnum->Fetch();
           if ($arEnum["XML_ID"] === "4e148c9276c0258c211ba74857737bea") {
              $arFields["GROUP_ID"][] = 8;
            }elseif ($arEnum["XML_ID"] === "de1e58ea3c4e55c0e0d10707ab90e5c4") {
               $arFields["GROUP_ID"][] = 15;
            }
   }

  }
спросил 14 Ноя, 13 от Kiriel (2,010 баллов)

4 Ответы

00 голосов
После регистрации в обработчике OnAfterUserRegister можно поменять только RESULT_MESSAGE, остальные поля $arFields игнорируются. Используйте OnBeforeUserRegister.
ответил 28 Дек, 13 от Ahbar (820 баллов)
00 голосов
Цитата
Алексей Валеев пишет:
После регистрации в обработчике OnAfterUserRegister можно поменять только RESULT_MESSAGE, остальные поля $arFields игнорируются. Используйте OnBeforeUserRegister.


С OnBeforeUserRegister лучше не стало.
ответил 13 Апр, 14 от Kiriel (2,010 баллов)
00 голосов
Попробуйте использовать первый код с OnAfterUserRegister, но группы устанавливайте напрямую вызовом API-функции
CUser::SetUserGroup($arFields["USER_ID"], $arGroups);
ответил 06 Авг, 14 от Ahbar (820 баллов)
00 голосов
Цитата
Алексей Валеев пишет:
После регистрации в обработчике OnAfterUserRegister можно поменять только RESULT_MESSAGE, остальные поля$arFields игнорируются. Используйте OnBeforeUserRegister.
На самом деле и сообщение здесь не изменяется! Все равно пользователю будет выведено в чистом виде то что было, не смотря на внесенные в OnAfterUserRegister изменения.
пысы. Сори что не по теме, уточнение так к слову ;)
ответил 10 Дек, 14 от squabbler (100 баллов)

Похожие вопросы