Мы используем Реформал.ру:   Войти

22

голоса

фильтрация по отсутствию значения

Иногда необходима фильтрация по отсутствию значения типа boolean. Сейчас значения булева типа фильтруются по правилам для чисел, что идеологически неверно, так как при отсутствии значения в таком поле оно не равно нулю, а просто отсутствует. Что интересно, функционал под такую фильтрацию заложен, но не до конца реализован.

Как достичь:
Файл modules/def_module.php

[649] case "boolean":
case "int": {
$data_module->applyFilterInt($sel, $field, $value);
break;
}

меняем на

case "boolean": {
$data_module->applyFilterBoolean($sel, $field, $value);
break;
}

case "int": {
$data_module->applyFilterInt($sel, $field, $value);
break;
}

Файл: modules/data/__search.php

Меняем функцию applyFilterBoolean на следующую:

public function applyFilterBoolean(umiSelection $sel, umiField $field, $value) {
if(empty($value) && !is_numeric($value)) return false;

if($this->applyKeyedFilters($sel, $field, $value)) {
return;
}

if($value == 1) {
$sel->addPropertyFilterEqual($field->getId(), 1);
}
elseif ($value == 0)
{
$sel->addPropertyFilterNotEqual($field->getId(), 1);
}
else
{
return;
}
}

Теперь можно искать объекты без установленных свойств, добавив в строку запроса ?fields_filter[имя_свойства]=0.
Было бы полезно включить эту функциональность в будущую версию системы.

Автор: Андрей Лоскутников, 22.07.2011, 11:28
Статус идеи: запланировано

Ответ администраторов сайта

Предложение зарегистрировано под номером 12224.

Комментарии

dobryakov, 31.08.2011, 17:08
Андрей, приглашаем вас присоединиться к открытой совместной разработке UMI.CMS http://www.umi-cms.ru/partners/collaborate/

Оставить комментарий

Copyright © 2017 Reformal Media Group. All Rights Reserved. • Используется система обратной связи Реформал.ру