В init.php висят обработчики
[CODE]AddEventHandler('main', 'OnBeforeUserAdd', 'OnBeforeUserUpdateHandler' );
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserUpdateHandler" );
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserUpdateHandler" );
function OnBeforeUserUpdateHandler(&$arFields) {
$arFields["LOGIN"] = $arFields["EMAIL"];
}[/CODE]
При этом при редактировании пользовательской информации из публичной части возвращается ошибка: "Логин должен быть не менее 3 символов."
Как такое может быть? Ведь email явно больше 3 символов. В методе CheckFields класса CAllUser заметил, что
[CODE]if(is_set($arFields, "LOGIN" ) && strlen($arFields["LOGIN" ]<3)
$this->LAST_ERROR .= GetMessage("MIN_LOGIN" )."<br>";[/CODE]вызывается до
[CODE]
$db_events = GetModuleEvents("main", "OnBeforeUserUpdate"); ...[/CODE]
Как избежать такой проблемы?
[CODE]AddEventHandler('main', 'OnBeforeUserAdd', 'OnBeforeUserUpdateHandler' );
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserUpdateHandler" );
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserUpdateHandler" );
function OnBeforeUserUpdateHandler(&$arFields) {
$arFields["LOGIN"] = $arFields["EMAIL"];
}[/CODE]
При этом при редактировании пользовательской информации из публичной части возвращается ошибка: "Логин должен быть не менее 3 символов."
Как такое может быть? Ведь email явно больше 3 символов. В методе CheckFields класса CAllUser заметил, что
[CODE]if(is_set($arFields, "LOGIN" ) && strlen($arFields["LOGIN" ]<3)
$this->LAST_ERROR .= GetMessage("MIN_LOGIN" )."<br>";[/CODE]вызывается до
[CODE]
$db_events = GetModuleEvents("main", "OnBeforeUserUpdate"); ...[/CODE]
Как избежать такой проблемы?