Цитата |
---|
Дмитрий Савин пишет: Товарищи, подскажите, в каком направлении искать решение проблемы? Пытаюсь реализовать заполнение свойства привязки к элементам через компонент формы добавления/редактирования элементов инфоблока с помощью предложенного варианта через result_modifier.php. Сам список со значениями выводится успешно при отображении компонента, однако при добавлении элемента выбранное значение этого свойства не сохраняется. |
Привет, я поступил следующим образом , кастомизировал компонент. Для возможности выбора полей данного типа (Привязка к элементам в виде списка) при настройке компонента нужно добавить в файл .parameters :
if (in_array($arr["PROPERTY_TYPE"], array("L", "N", "S", "F", "E")))
ДАЛЕЕ в component ищеш код :
if ( $arProperty["PROPERTY_TYPE"] == "L")
{
$rsPropertyEnum = CIBlockProperty::GetPropertyEnum($arProperty["ID"]);
$arProperty["ENUM"] = array();
while ($arPropertyEnum = $rsPropertyEnum->GetNext())
{
$arProperty["ENUM"][$arPropertyEnum["ID"]] = $arPropertyEnum;
}
}
и дополняешЬ его выборкой полей из инфоблока:
if ( $arProperty["PROPERTY_TYPE"] == "E")
{
$arSelect1 = Array("ID","NAME");
$arFilter1 = Array( "IBLOCK_ID"=>$arProperty['LINK_IBLOCK_ID'] , "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$dbAllElements = CIBlockElement::GetList(Array(), $arFilter1, false, false, $arSelect1);
$arAllElements = array(''=>array('VALUE'=>'²ëÑÕàØâÕ:'));
$arProperty["ENUM"] = array();
while ($arPropertyEnum = $dbAllElements->Fetch())
{
$arProperty["ENUM"][$arPropertyEnum["ID"]] = array('VALUE'=>$arPropertyEnum['NAME'],'ID'=>$arPropertyEnum['ID']);
}
}
Далее ищешЬ все обработчики PROPERTY_TYPE="L" и дополняешЬ их обработчиком PROPERTY_TYPE="E"
После этого в шаблоне проверяешЬ поступление данных :
echo "<pre>Template arResult: "; print_r($arResult); echo "</pre>";
если данные поступают дополняешЬ шаблон:
case "L":
case "E":
По-моему Всё. ЕСЛИ ЧТО ПИШИ ВЫЛОЖУ ФАЙЛЫ .