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

Логин = Емайл

00 голосов
2
Хочу сделать регистрацию, в которой будет только емайл (он же логин), и хочется это сделать с помощью стандартного компонента system.auth.registration
По сути надо всего лишь отдать обработчику логин равный введенному емайлу (чтобы не было ошибки и регистрация прошла успешно без введеного логина).
Но то ли я не дочитал про компоненты (хотя вроде дочитал), то ли так сделать нельзя.
Раньше такую регистрацию делал вручную классом CUser, но хочется сохранить настраиваемость и динамику компонента регистрации.
спросил 08 Июль, 13 от cartmen (460 баллов)

2 Ответы

00 голосов
Кастомизируете шаблон регистрации, спрячьте поле логин (только задайте ему какое-нить значение <input type="hidden" name="LOGIN" value="temp_login">), чтобы форма не ругалась.
Напишите обработчик события onbeforeuserregister, где и делайте логин равный мейлу.
ответил 08 Июль, 13 от Almarea (3,760 баллов)
00 голосов
Огромное спасибо, а я пол дня думал, гадал, читал документацию. Оказывается все так просто...
Может кому интересно будет, вот как это делается:

В шаблоне кастомизируем поля для логина вот так вот:
Код
<input type="hidden" name="REGISTER[LOGIN]" value="temp_login">

В /bitrix/php_interface/init.php вставляем следующий код:
Код
<?php
AddEventHandler("main", "OnBeforeUserRegister", Array("MyClass", "OnBeforeUserRegisterHandler"));
class MyClass 
{ 
   function OnBeforeUserRegisterHandler(&$arFields) 
    { 
          $arFields["LOGIN"] = $arFields["EMAIL"]; 
    } 
} 
?>

Произносим молитву (что-то вроде "хоть бы заработало") 3 раза, и вуаля - все работает.
ответил 23 Авг, 13 от cartmen (460 баллов)

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

0 голосов
3 ответов
0 голосов
6 ответов
спросил 02 Июнь, 13 от LeonKing (140 баллов)