Почему после присвоения в OnBeforeUserUpdateHandler логина и email, они не воспринимаются Битриксом?

Убрал из формы профиля поля логина и эл.почты. Вынес их заполнение в событие до изменения профиля, они заполняются, видны в Before и в After, но профиль не сохраняется и выводятся ошибки "Логин должен быть не менее 3 символов" и "Неверный E-Mail"
Что не так?

AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserUpdateHandler");
function OnBeforeUserUpdateHandler(&$arFields)
{
    $arFields["ID"] = CUser::GetID();
    $arFields["LOGIN"] = CUser::GetLogin();
    $arFields["EMAIL"] = CUser::GetEmail();
}

AddEventHandler("main", "OnAfterUserUpdate", "OnAfterUserUpdateHandler");
function OnAfterUserUpdateHandler(&$arFields)
{
    var_dump($arFields);
}
  • Вопрос задан
  • 661 просмотр
Пригласить эксперта
Ответы на вопрос 1
AlexeyGfi
@AlexeyGfi
YouTube >>> Битриксоид из Колхоза
Вы читаете их просто как функции, а не из конкретного объекта текущего пользователя.

Попробуйте так:

function OnBeforeUserUpdateHandler(&$arFields)
{
    global $USER;
    $arFields["ID"] = $USER->GetID();
    $arFields["LOGIN"] = $USER->GetLogin();
    $arFields["EMAIL"] = $USER->GetEmail();
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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