Как использовать переменные $USER и $DB в init.php (1c Bitrix)
Пишу регистрацию на 1c Bitrix. Не могу понять как использовать глобальные переменные $USER и $DB в init.php.
Необходимо после успешной регистрации выполнить sql запросы. Для этого мне необходимо получить id пользователя и соответственно записать данные в БД битрикса.
В init.php использую событие OnAfterUserRegister. Пытаюсь получить id пользователя, для теста пробовал записать переменную в $_SESSION и вывести на экран в файле registration.php
init.php
AddEventHandler("main", "OnAfterUserRegister","OnAfterUserRegisterHandler");
function OnAfterUserRegisterHandler(&$arFields)
{
global $USER;
global $APPLICATION;
$userId = $USER->GetID();
$APPLICATION->SetPageProperty("myProperty", $userId);
}
register.php
$nameUser = $_SESSION["nameUser"];
echo "nameUser: " . $nameUser;
Никакие данные не получаю. Ошибок никаких нет.
Также при выполнении запроса в функции OnAfterUserRegisterHandler, появляется ошибка на строке $dbResult = $DB->Query($strSql);
AddEventHandler("main", "OnAfterUserRegister","OnAfterUserRegisterHandler");
function OnAfterUserRegisterHandler(&$arFields)
{
global $DB;
$strSql = "SELECT * FROM ts_cards ORDER BY cardnum";
$dbResult = $DB->Query($strSql);
$card = array();
}
Ошибка - Call to a member function Query() on null.
Переменная $DB имеет значение null, я правильно понимаю что ее не видно в данной функции? Почему?
Это тестовые варианты кода, мне необходимо разобраться как использовать данные переменные в файле init.php.
Ответы (1 шт):
При регистрации $USER может быть не определён. Можно попробовать так:
function OnAfterUserRegisterHandler(&$arFields)
{
$userId = $arFields['USER_ID'];
$_SESSION['USER_ID'] = $userId;
}
Вместо global $DB; можно попробовать $DB=$GLOBALS['DB'];.