Исключить выбранные ресурсы mFilter2
Добрый день!
Прошу помощь в настройке mFilter2. Задача, наоборот исключить ресурсы которые выбраны в фильтре и показать все, которые не попадают в запрос.
Например, имеются 3 товара, у каждого (в поле msoption) задана дата или несколько дат:
Товар 1 — [15.10.2024, 25.10.2024]
Товар 2 — [25.10.2024 ]
Товар 3 — [31.10.2024]
Пользователь в запросе, указывает начальную и конечную дату (например msoption|date_close=25.10.2024,30.10.2024), соответственно из выборки должны исключиться Товар 1 и Товар 2, т.к. содержат число 25.10.2024.
Расширяем класс фильтрации
Работает. Фильтр исключает Товар 2, но не исключает Товар 1 (где указано больше одной даты).
Напишите пожалуйста, если есть решение, как сделать инверсию фильтрации. Готов задонатить за решение. Уже 3 дня, никак… Спасибо!
Прошу помощь в настройке mFilter2. Задача, наоборот исключить ресурсы которые выбраны в фильтре и показать все, которые не попадают в запрос.
Например, имеются 3 товара, у каждого (в поле msoption) задана дата или несколько дат:
Товар 1 — [15.10.2024, 25.10.2024]
Товар 2 — [25.10.2024 ]
Товар 3 — [31.10.2024]
Пользователь в запросе, указывает начальную и конечную дату (например msoption|date_close=25.10.2024,30.10.2024), соответственно из выборки должны исключиться Товар 1 и Товар 2, т.к. содержат число 25.10.2024.
Расширяем класс фильтрации
public function filterAvailability(array $requested, array $values, array $ids, $format = 'd.m.Y') {
$matched = array();
$min = min($requested);
$max = max($requested);
foreach ($values as $number => $resources) {
if ($number < $min || $number > $max) {
foreach ($resources as $id) {
$matched[] = $id;
}
}
}
return $matched;
}
Работает. Фильтр исключает Товар 2, но не исключает Товар 1 (где указано больше одной даты).
Напишите пожалуйста, если есть решение, как сделать инверсию фильтрации. Готов задонатить за решение. Уже 3 дня, никак… Спасибо!
Комментарии: 1
но не исключает Товар 1 (где указано больше одной даты)Посмотри тут
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.