Всем доброго времени суток.
Возникла необходимость создания пользовательского свойства типа "список", отличающегося от обычного только наличием дополнительной настройки - текстового поля, куда вводится описание свойства.
При интеграции его в 10-й битрикс все шикарно работало без каких-либо нареканий, в 11-м появилась проблема: при редактировании свойства в Информ. блоках для задания ему значений списка эти значения не сохраняются, в то время как в 10-м, повторюсь, это происходило. Информация в новом текстовом поле сохраняется.
Вопросы следующие:
из-за чего это происходит?
что нужно сделать, чтобы значения списка сохранялись?
Код приведен ниже, он дописывается в bitrix/php_interface/init.php
Возникла необходимость создания пользовательского свойства типа "список", отличающегося от обычного только наличием дополнительной настройки - текстового поля, куда вводится описание свойства.
При интеграции его в 10-й битрикс все шикарно работало без каких-либо нареканий, в 11-м появилась проблема: при редактировании свойства в Информ. блоках для задания ему значений списка эти значения не сохраняются, в то время как в 10-м, повторюсь, это происходило. Информация в новом текстовом поле сохраняется.
Вопросы следующие:
из-за чего это происходит?
что нужно сделать, чтобы значения списка сохранялись?
Код приведен ниже, он дописывается в bitrix/php_interface/init.php
Код |
---|
if (CModule::IncludeModule("iblock")) { class filterEnumClass extends CIBlockPropertyElementList //класс, описывающий пользовательское свойство { function GetUserTypeDescription() { return array( 'PROPERTY_TYPE' => 'L', 'USER_TYPE' => 'Filter_enum', 'DESCRIPTION' => 'Фильтр_список', 'PrepareSettings' => array('filterEnumClass','PrepareSettings'), 'GetPropertyFieldHtml' => array('filterEnumClass','GetPropertyFieldHtml'), 'GetSettingsHTML' => array('filterEnumClass','GetSettingsHTML'), 'CheckFields' => array('filterEnumClass','CheckFields'), ); } function PrepareSettings($arUserField) { return array( "DESCRIPTION" => $arUserField["USER_TYPE_SETTINGS"]["DESCRIPTION"], ); } function GetSettingsHTML($arUserField, $arHtmlControl, $bVarsFromForm) { $result = ''; $value = $arUserField["USER_TYPE_SETTINGS"]["DESCRIPTION"]; $result .= ' <tr valign="top"> <td>Описание свойства:</td> <td> <textarea name="'.$arHtmlControl["NAME"].'[DESCRIPTION]" rows="10" cols="40">'.$value.'</textarea> </td> </tr> '; return $result; } function CheckFields($arUserField, $value) { $aMsg = array(); return $aMsg; } function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName) { //функция отвечает за отображение в редактировании карточки товара - не думаю, что есть смысл ее тут приводить } } } AddEventHandler("iblock",'OnIBlockPropertyBuildList',array('filterEnumClass','GetUserTypeDescription')); |