Свойство типа список - это поле, которое позволяет выбрать один или несколько вариантов из предопределенного списка. Например, вы можете создать свойство "Тип клиента", где будут доступны варианты "Физическое лицо", "Юридическое лицо", "ИП" и т.д.
При разработке часто нужно получить все или какие-то конкретные значения списка. Ниже приведены примеры как это можно сделать.
Получить все варианты значений свойства
Всю необходимую информацию о свойстве: ID, название, код свойства, можно узнать в админке на странице редактирования инфоблока к которому привязано свойство.
Указываем IBLOCK_ID чтобы точно получить значения нужно свойства у нужного инфоблока так как возможна ситуация когда у разных инфоблоков есть свойства с одинаковым кодом.
Используя код свойства
\Bitrix\Main\Loader::includeModule('iblock');
$res = \CIBlockPropertyEnum::GetList(array(), array(
"IBLOCK_ID" => 5,
"CODE" => 'TIP'
));
while($row = $res->Fetch()) {
var_dump($row);
}
IBLOCK_ID
- ID инфоблока к которому привязано свойство
CODE
- код свойства
Используя ID свойства
\Bitrix\Main\Loader::includeModule('iblock');
$res = \CIBlockPropertyEnum::GetList(array(), array(
"IBLOCK_ID" => 5,
"PROPERTY_ID" => 65
));
while($row = $res->Fetch()) {
var_dump($row);
}
IBLOCK_ID
- ID инфоблока к которому привязано свойство
PROPERTY_ID
- ID свойства
Пример результата работы
array(11) {
["ID"]=>
string(2) "57"
["PROPERTY_ID"]=>
string(2) "65"
["VALUE"]=>
string(29) "Физическое лицо"
["DEF"]=>
string(1) "N"
["SORT"]=>
string(2) "20"
["XML_ID"]=>
string(32) "1126e2879ded40119ccab3583e2b4080"
["TMP_ID"]=>
NULL
["EXTERNAL_ID"]=>
string(32) "1126e2879ded40119ccab3583e2b4080"
["PROPERTY_NAME"]=>
string(6) "Тип"
["PROPERTY_CODE"]=>
string(3) "TIP"
["PROPERTY_SORT"]=>
string(2) "20"
}
array(11) {
["ID"]=>
string(2) "56"
["PROPERTY_ID"]=>
string(2) "65"
["VALUE"]=>
string(31) "Юридическое лицо"
["DEF"]=>
string(1) "N"
["SORT"]=>
string(2) "10"
["XML_ID"]=>
string(32) "a8947a33d6e4e98dcd5ae56846fb1106"
["TMP_ID"]=>
NULL
["EXTERNAL_ID"]=>
string(32) "a8947a33d6e4e98dcd5ae56846fb1106"
["PROPERTY_NAME"]=>
string(6) "Тип"
["PROPERTY_CODE"]=>
string(3) "TIP"
["PROPERTY_SORT"]=>
string(2) "20"
}
Получить конкретный вариант значения свойства
\Bitrix\Main\Loader::includeModule('iblock');
$res = \CIBlockPropertyEnum::GetList(array(), array(
"ID" => 56
));
while($row = $res->Fetch()) {
var_dump($row);
}
ID
- в данном случаи это ID искомого варианта значения
Пример результата работы
array(11) {
["ID"]=>
string(2) "56"
["PROPERTY_ID"]=>
string(2) "65"
["VALUE"]=>
string(31) "Юридическое лицо"
["DEF"]=>
string(1) "N"
["SORT"]=>
string(2) "10"
["XML_ID"]=>
string(32) "a8947a33d6e4e98dcd5ae56846fb1106"
["TMP_ID"]=>
NULL
["EXTERNAL_ID"]=>
string(32) "a8947a33d6e4e98dcd5ae56846fb1106"
["PROPERTY_NAME"]=>
string(6) "Тип"
["PROPERTY_CODE"]=>
string(3) "TIP"
["PROPERTY_SORT"]=>
string(2) "20"
}
Таким образом используя \CIBlockPropertyEnum::GetList() можно легко получить как все варианты значений свойства так и какой-то конкретный вариант.
На нашем сайте так же есть статья о том как получить значения списочного поля в bitrix.