mFilter2 и фильтр :date
Пробую фильтровать по дате. Нашел фильтр :date, которого почему-то нет в документации (там только :day, :month и :year).
Вызыв фильтра так:
Сейчас работает дата в таком порядке: ?date_from=2015-12-15.
Как поменять порядок на другой: ?date_from=2015-12-15 (дд-мм-гггг)?
Или хотя бы где найти документацию к этому фильтру :date?
Вызыв фильтра так:
'filters' => '
tv|date_from:date,
',
'aliases' => '
tv|date_from==date_from
',
Сейчас работает дата в таком порядке: ?date_from=2015-12-15.
Как поменять порядок на другой: ?date_from=2015-12-15 (дд-мм-гггг)?
Или хотя бы где найти документацию к этому фильтру :date?
Поблагодарить автора
Отправить деньги
Комментарии: 3
На гитхабе код mSearch2 уже похоже нету. В каком файле хотя бы копать и найти код :date?
Нашел в файле core/components/msearch2/model/msearch2/filters.class.php такой код:
Или нужно будет переопределять этот код через свой метод фильтрации?
/**
* Prepares values for filter
* Returns array with resources grouped by specified date format
*
* @param array $values
* @param string $name
* @param string $format
* @param string $sort
*
* @return array Prepared values
*/
public function buildDateFilter(array $values, $name = '', $format = 'Y-m-d', $sort = 'desc') {
$results = array();
foreach ($values as $value => $ids) {
if (!is_numeric($value)) {
$value = strtotime($value);
}
$value = date($format, $value);
if (!isset($results[$value])) {
$results[$value] = array(
'title' => $value,
'value' => $value,
'type' => 'date',
'resources' => $ids,
);
}
else {
$results[$value]['resources'] = array_merge(
$results[$value]['resources'],
$ids
);
}
}
if (count(array_keys($results)) < 2 && empty($this->config['showEmptyFilters'])) {
return array();
}
if (strtolower($sort) == 'asc') {
ksort($results);
}
else {
krsort($results);
}
return $results;
}
Что мне с ним делать? Можно ли как-то передать своё значение даты в $format? Или нужно будет переопределять этот код через свой метод фильтрации?
Отвечаю себе же )))
Да, нужно написать свой метод фильтрации взяв за основу существующие. получилось так:
Да, нужно написать свой метод фильтрации взяв за основу существующие. получилось так:
<?php
class customFilter extends mse2FiltersHandler {
// Здесь можно переопределить методы родительского класса, или создать собственные
public function filterDateRev(array $requested, array $values, array $ids) {
return $this->filterDate($requested, $values, $ids, 'd-m-Y');
}
}
+ в системной настройке указал название своего класса customFilter
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.