Всем привет!
Гуглил долго и нудно, может быть, не то, или не там.
Ищу метод какой-нибудь, типа
Код |
---|
$GLOBALS["USER_FIELD_MANAGER"]->getFieldHTML('UF_FIELD', 'по умолчанию'); |
или
Код |
---|
$GLOBALS["USER_FIELD_MANAGER"]->getFieldHTML(array(
'TYPE' => 'STRING',
'DEFAULT' => '0',
), 'USER_ID_INDEX'); |
который можно вставить прямо в шаблон формы и получить, к примеру, готовый список со всеми опциями или предзаполненное строковое поле.
UPD: Проблема решена. Нашлись плохо документированные методы GetEditFormHTML, которые можно вызывать из разных классов, реализующих разные типы полей. Например, так можно сгенерить список:
Код |
---|
$fields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields('USER'); //получаем все поля объекта USER
$field = $fields['UF_USER_TYPE']; //вытаскиваем поле с нужным name
//генерируем его
echo CUserTypeEnum::GetEditFormHTML($field, array(
"NAME" => $field["FIELD_NAME"],
"VALUE" => $field['VALUE'],
));
|
По скольку каждый массив поля хранит в себе полезное свойство
['USER_TYPE']['CLASS_NAME'], можно по быстроляну накидать функцию, которая будет рендерить поля любых типов, принимая на вход только массив параметров и значение поля (которое по дефолту можно взять из ['VALUE']).
Странно, что нормальной функции для этого я так и не нашел, кроме CUserTypeManager::GetEditFormHTML(), которая сразу вываливает код, пригодный для вставки в форму админки, но категорически непригодный для публичной части.