作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据对象中有日期属性。
如何在 ModelAdmin 中按日期范围搜索?
例如:“搜索日期大于 2007-13-01 且小于 2007-17-01 的所有项目”
或“搜索日期介于 2007-13-01 和 2007-17-01 之间的所有项目”
目前我只能使用 GreaterTranFilter 或 LessThanFilter 进行搜索,但不能同时使用两者。
class MyObject extends DataObject {
private static $db = [
"Date" => "Date",
];
private static $summary_fields = [
"Date" => "Date",
];
private static $searchable_fields = [
"Date" => [
"field" => "DateField",
"filter" => "GreaterThanFilter",
"title" => 'Date from ...'
],
];
}
此外,搜索字段必须使用日历(日期选择器)
DateField:
default_config:
showcalendar: true
您能举例说明如何按日期范围搜索吗?
最佳答案
有一个 WithinRangeFilter
,但如果您仅使用配置,它不会让您走得太远。这是您真正需要按程序实现的事情。
通过重载 getSearchContext()
添加范围过滤器,然后重载 getList()
并检查日期范围的 q
请求参数,并将它们应用到列表中。
public function getSearchContext()
{
$context = parent::getSearchContext();
$context->getFields()->push(DateField::create('q[Start]','Start'));
$context->getFields()->push(DateField::create('q[End]','End'));
return $context;
}
public function getList()
{
$list = parent::getList();
$params = $this->getRequest()->requestVar('q');
$filters = [];
if(isset($params['Start'])) {
$filters['Date:LessThanOrEqual'] = $params['Start'];
}
if(isset($params['End'])) {
$filters['Date:GreaterThanOrEqual'] = $params['End'];
}
return $list->filter($filters);
}
关于search - 银条。在 ModelAdmin 中按日期范围搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42440841/
我正在用 JavaScript 构建游戏并生成结果。 var score = array("5", "5", "1"); 因此玩家 1 的得分为 5,玩家 2 的得分为 5,玩家 3 的得分为 1。
我是一名优秀的程序员,十分优秀!