Drupal → Необязательное одно из двух значений раскрытого фильтра с оператором BETWEEN
При использовании раскрытого фильтра Views с оператором Between (Между) нужно заполнять оба значения фильтра — и минимум и максимум, при этом нет возможности оставить одно значение пустым, чтобы Views автоматически превратил value BETWEEN min AND max
в value >= min
или value <= max
.
Можно написать свой filter handler, но его придётся прописывать каждому полю самостоятельно.
Второй вариант, более универсальный:
1. В настройках запроса нужного Views прописать тег optional_between
:
2. Реализовать хук hook_views_query_alter
:
/** * Implements hook_views_query_alter(). */ function MODULENAME_views_query_alter(&$view, &$query) { if (in_array('optional_between', $query->options['query_tags'])) { foreach ($query->where as &$condition_group) { foreach ($condition_group['conditions'] as &$condition) { if ($condition['operator'] == 'BETWEEN') { if ($condition['value'][0] === '') { $condition['operator'] = '<='; $condition['value'] = $condition['value'][1]; } elseif ($condition['value'][1] === '') { $condition['operator'] = '>='; $condition['value'] = $condition['value'][0]; } } } } } }
Комментарии
При указании только одной даты условие вообще отсутствует в $condition_group. Появляется только если обе установлены.
Не знаете причину отсутствия?
Оставить комментарий