Задать вопрос
@redesupar

Как создать раздел элемента при регистрации пользователя битрикс?

Давно еще при php 7.4 создавал(скопировал код) обработчик который будет создавать разделы в заданном инфоблоке по логину, сейчас он сломался и никак понять не могу куда копать?

<?
// Регистрируем обработчик AddSectionInBlock 
AddEventHandler("main", "OnAfterUserAdd", Array("AddSectionInBlock", "OnAfterUserAddHandler")); 
class AddSectionInBlock 
	 { 
	 	// создаем обработчик события "OnAfterUserAdd" 
	 	function OnAfterUserAddHandler(&$arFields) 
	 { 
	 if (CModule::IncludeModule('iblock')) { 
		 $bs = new CIBlockSection; 
		 $arFieldsi = Array( 
			 "ACTIVE" => "Y",
			 "IBLOCK_ID" => 10, //ID инфоблока в котором создастся раздел 
			 "NAME" => $arFields["LOGIN"], //Название раздела с логином пользователя 
			 "CODE" => $arFields["LOGIN"], //Символьный код раздела с логином пользователя 
			 "SORT" => $SORT, 
		 );
		 if ($ID > 0) { 
			 $res = $bs->Update($ID, $arFieldsi); 
		 } else { 
			 $ID = $bs->Add($arFieldsi); 
			 $res = ($ID > 0); 
		 } 
		 if (!$res) 
		 	echo $bs->LAST_ERROR; 
		 } 
	} 
} 
?>


Выдает ошибку
[TypeError] 
call_user_func_array(): Argument #1 ($callback) must be a valid callback, non-static method AddSectionInBlock::OnAfterUserAddHandler() cannot be called statically (0)
/home/r/site.ru/public_html/bitrix/modules/main/tools.php:4730
#0: call_user_func_array(array, array)
	/home/r/site.ru/public_html/bitrix/modules/main/tools.php:4730
#1: ExecuteModuleEventEx(array, array)
	/home/r/site.ru/public_html/bitrix/modules/main/classes/general/user.php:333
#2: CAllUser->Add(array)
	/home/r/site.ru/public_html/bitrix/components/bitrix/main.register/component.php:199
#3: include(string)
	/home/r/site.ru/public_html/bitrix/modules/main/classes/general/component.php:607
#4: CBitrixComponent->__includeComponent()
	/home/r/site.ru/public_html/bitrix/modules/main/classes/general/component.php:684
#5: CBitrixComponent->includeComponent(string, array, boolean, boolean)
	/home/r/site.ru/public_html/bitrix/modules/main/classes/general/main.php:1072
#6: CAllMain->IncludeComponent(string, string, array, boolean)
	/home/r/site.ru/public_html/auth/registration.php:5
----------
  • Вопрос задан
  • 68 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@konsealex
Попробуйте добавить ключевое слово "static" методу OnAfterUserAddHandler
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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