Опишу проблему и сразу же решение, может у кого-то тоже возникала такая же.
Требовалось сделать пользовательские поля с чекбоксами. Создали в админке пользовательское поле, поставили галочку выводить чекбоксами и что мы видим?! Список есть, но радио кнопки =(. Лечим в код...
Перед нами предстает такая картина
system.field.edit/templates/iblock_section
Код |
---|
if($arParams['arUserField']["SETTINGS"]["DISPLAY"]=="CHECKBOX")
{
?><label><input type="radio" value="<?echo $key?>" name="<?echo $arParams["arUserField"]["FIELD_NAME"]?>"<?echo ($bSelected? " checked" : "")?><?
if ($arParams["arUserField"]["MULTIPLE"]=="Y"):
?> multiple="multiple"<?
endif;
?> /><?=$val?></label><br /><?
} |
Может я конечно плохо знаю HTML но как мне помниться атрибута multiple="multiple" для inputa нет.
Переделываем так
Код |
---|
if($arParams['arUserField']["SETTINGS"]["DISPLAY"]=="CHECKBOX")
{
?><label><input <?if ($arParams["arUserField"]["MULTIPLE"]=="Y"):?>type="checkbox"<?else:?>type="radio"<?endif;?> value="<?echo $key?>" name="<?echo $arParams["arUserField"]["FIELD_NAME"]?>"<?echo ($bSelected? " checked" : "")?><?
?>><?=$val?></label><br /><?
} |
И все работает =))))
Следующая проблема.
Выбрали мы значит пару чекбоксов или элементов списка в зависимости что стоит сохранили все ОК. Но вдруг захотелось отредактировать и что мы видим, а ничего хорошего. Выбранные мной элементы не проселекчены. Что делать...лезим в код,а там
Код |
---|
$bSelected = in_array($key, $arResult["VALUE"]) && (
(!$bWasSelect) ||
($arParams["arUserField"]["MULTIPLE"] == "Y")
); |
поиск совпадений ищеться не по тому массиву. Нужно искать в $arParams["arUserField"]["VALUE"], а ищет в $arResult["VALUE"].
меняем...
Код |
---|
$bSelected = in_array($key, $arParams["arUserField"]["VALUE"]) && (
(!$bWasSelect) ||
($arParams["arUserField"]["MULTIPLE"] == "Y")
);
|
и все заработало.
Возможно эта проблема и освещалась ранее, но я ее че-то не нашел, а возможно в новых версиях ее устранили ибо я ломал 8.5.