@Userhabr
Фронтенд/Бэкенд - разработчик и немного дизайнер

Как сделать кастомное свойство с множеством полей в Битрикс?

в OnIBlockPropertyBuildList есть метод GetPropertyFieldHtmlMulty. Но я не совсем понимаю как сохранить несколько полей. Получается только с одним:

AddEventHandler("iblock", "OnIBlockPropertyBuildList", array("CIBlockPropertyCustom", "GetUserTypeDescription"));
class CIBlockPropertyCustom
{
    public function GetUserTypeDescription()
    {
        return array(
            "PROPERTY_TYPE"        => "F",
            "USER_TYPE"            => "SERVICE",
            "DESCRIPTION"          => "Фотогалерея",
            "GetPropertyFieldHtml" => array("CIBlockPropertyCustom", "GetPropertyFieldHtml"),
        );
    }

    public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
    {
        return '<input type="text" name="'.$strHTMLControlName["VALUE"].'" value="'.$value['VALUE'].'">';
    }
}


В итоге мне нужно сохранять два поля: файл и текстовое поле
5c65d6b851d6c418262379.png
  • Вопрос задан
  • 1881 просмотр
Пригласить эксперта
Ответы на вопрос 2
@jasper-blondin
Файл -- это число. Второе поле -- это строка.
Чтобы сохранить 2 отдельных значения в одно поле БД Вам нужно разработать собственный метод сериализации данных.
Чтобы модифицировать значения до сохранения в БД и после чтения из БД, опишите дополнительно методы ConvertToDB и ConvertFromDB соответственно.

PS
Еще один вариант: записывать текстовую часть значения свойства как DESCRIPTION к сохраняемому файлу (когда выполняете метод CFile::Save).
Ответ написан
Комментировать
Давно не работал с этим функционалом, должно быть так же как и с одним, только во втором параметре будет не одно значение а массив значений. js для кнопки "Добавить" тоже вроде нужно самому писать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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