для типа поля:
<?php
use Bitrix\Main\UserField\Types\StringType;
class AgreementType extends StringType {
public const
USER_TYPE_ID = 'agreement',
RENDER_COMPONENT = 'bitrix:main.field.string';
public static function getDescription(): array
{
return [
'DESCRIPTION' => 'Расходование средств',
'BASE_TYPE' => CUserTypeManager::BASE_TYPE_STRING,
];
}
}
Подключаю так:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('main', 'OnUserTypeBuildList', ['AgreementType', 'getUserTypeDescription']);
Но поле нигде не отображается, даже в админке (хочу увидеть его в CRM)
Что еще нужно сделать?
Если что то забыл уточнить, подскажите, пожалуйста
и куда вы этот код добавили?
Класс в отдельный файл, его require в локальном init.php Обработчик тоже в init.php (тоже тот что в local)
На самом деле буду рад если кто нибудь просто гайд кинет, актуальный, задачка то тривиальная вроде Просто все что я нашел в гугле оно совсем старое (12-15 год) и уже депрекейтед
в доке по д7 есть же описание и примеры стандартных полей в ядре
https://dev.1c-bitrix.ru/api_d7/bitrix/main/userfield/uf-fieldclass.php оно? Я в целом и руководствовался им)) Но там не густо по примерам, классика доки по битриксу
в ядре найди поля. например привязка к crm
Получить getDescription от родителя, дополнить своими полями и отдать.
А там у родителя getDescription только с этими двумя, которые я возвращаю Остальные данные мерджатся с дефолтными в абстрактном родителе
И что в итоге получается?
А в итоге получается объединение двух объектов (первый из моего класса, из первого сообщения) и второй из BaseType: return [ 'USER_TYPE_ID' => static::USER_TYPE_ID, 'CLASS_NAME' => static::class, 'EDIT_CALLBACK' => [static::class, 'renderEdit'], 'VIEW_CALLBACK' => [static::class, 'renderView'], 'USE_FIELD_COMPONENT' => true ];
Если поля нет в списке типов в админке, значит событие не срабатывает.
Обсуждают сегодня