Приветствую.
Тема: Сложная логика для фильтра в функции AddFilterFields при создании собственного типа свойства инфо-блока.
Столкнулся сегодня с проблемой отсутствия поддержки сложной логики в фильтре при создании собственного типа свойства инфо-блока.
Код:
Дамп фильтра:
Кто нибудь пытался внедрять сложную логику в свой тип свойства? У вас работало? Если да, то сообщите, пожалуйста, об этом. Чтобы можно было понять, что это мой косяк или же все таки такая поддержка отсутствует.
Спасибо.
Тема: Сложная логика для фильтра в функции AddFilterFields при создании собственного типа свойства инфо-блока.
Столкнулся сегодня с проблемой отсутствия поддержки сложной логики в фильтре при создании собственного типа свойства инфо-блока.
Код:
public static function AddFilterFields($arProperty, $strHTMLControlName, &$arFilter, &$filtered) { $filtered = false; $valueName = $strHTMLControlName["VALUE"]; $value = isset($_REQUEST[$valueName])? $_REQUEST[$valueName]:''; if(is_array($value)&&isset($value['FROM'])&&isset($value['TO'])){ $iFrom = self::_getAgeMonths(array('VALUE'=>$value['FROM'])); $iTo = self::_getAgeMonths(array('VALUE'=>$value['TO'])); if($iFrom){ $arTmpFilter = array('LOGIC' => 'OR'); $arNextFilter = array(); $arNextFilter[">=PROPERTY_".$arProperty["ID"]] = $iFrom; $arTmpFilter[] = $arNextFilter; $arNextFilter = array(); $arNextFilter["=PROPERTY_".$arProperty["ID"]] = 0; $arTmpFilter[] = $arNextFilter; $arFilter[] = $arTmpFilter; $filtered = true; } if($iTo){ $arTmpFilter = array('LOGIC' => 'OR'); $arNextFilter = array(); $arNextFilter["<=PROPERTY_".$arProperty["ID"]] = $iTo; $arTmpFilter[] = $arNextFilter; $arNextFilter = array(); $arNextFilter["PROPERTY_".$arProperty["ID"]] = false; $arTmpFilter[] = $arNextFilter; $arFilter[] = $arTmpFilter; $filtered = true; } } var_dump($arFilter); } |
_getAgeMonths - возвращает Integer |
Дамп фильтра:
array(24) { ["IBLOCK_ID"]=> int(8) ["NAME"]=> NULL ["SECTION_ID"]=> int(18) ["ID_1"]=> NULL ["ID_2"]=> NULL ["TIMESTAMP_X_1"]=> NULL ["CODE"]=> NULL ["EXTERNAL_ID"]=> NULL ["MODIFIED_BY"]=> NULL ["MODIFIED_USER_ID"]=> NULL ["DATE_CREATE_1"]=> NULL ["CREATED_BY"]=> NULL ["CREATED_USER_ID"]=> NULL ["DATE_ACTIVE_FROM_1"]=> NULL ["DATE_ACTIVE_FROM_2"]=> NULL ["DATE_ACTIVE_TO_1"]=> NULL ["DATE_ACTIVE_TO_2"]=> NULL ["ACTIVE"]=> NULL ["DESCRIPTION"]=> NULL ["WF_STATUS"]=> NULL ["?TAGS"]=> NULL ["CHECK_PERMISSIONS"]=> string(1) "Y" ["MIN_PERMISSION"]=> string(1) "R" [0]=> array(3) { ["LOGIC"]=> string(2) "OR" [0]=> array(1) { ["<=PROPERTY_85"]=> int(9) } [1]=> array(1) { ["PROPERTY_85"]=> bool(false) } } } |
Спасибо.