![](/img/trans.png)
[英]How to decorate a date range filter with a date picker in SONATA ADMIN
[英]Sonata date range filter
我有一个奏鸣曲日期范围过滤器
protected function configureDatagridFilters(DatagridMapper $filter)
{
$now = new \DateTime();
$filter
->add('created_at', 'doctrine_orm_date_range', array(
'label' => 'created_at_long',
'input_type' => 'text',
'field_options' => array(
'widget' => 'single_text'
)
)
);
}
如果我输入相同的日期,则具有此日期的元素不会在我的列表中返回。 有没有办法告诉奏鸣曲不要使用严格的比较并使用“小于或等于”和“大于或等于”运算符?
我认为添加格式标签会放松约束。 无论如何都适用于(包括)我,具体如下:
'format' => 'dd/MM/yyyy'
从当前的实时/工作过滤器:
->add('someField', 'doctrine_orm_date_range', [], null, ['format' => 'dd/MM/yyyy', 'widget' => 'single_text'])
我认为你应该创建自己的过滤器来扩展这个。
另一种方法是使用doctrine_orm_datetime
为什么
当您查看父抽象类Sonata\\DoctrineORMAdminBundle\\Filter\\AbstractDateFilter
您可以在filter
方法中读取:
$data['value']['start'] = $data['value']['start'] instanceof \DateTime ? $data['value']['start']->getTimestamp() : 0;
$data['value']['end'] = $data['value']['end'] instanceof \DateTime ? $data['value']['end']->getTimestamp() : 0;
这就像你在day/month/year:00:00
和day/month/year:00:00
之间寻找的东西。
不在day/month/year:00:00
和day/month/year:23:59
检查实体中的created_at属性并查看其名称,如果它已创建,则createdat和create_at是DB中的名称,因此您必须将其更改为:
->add('createdAt', 'doctrine_orm_date_range', array(
'label' => 'created_at_long',
'input_type' => 'text',
'field_options' => array(
'widget' => 'single_text'
)
)
);
因为奏鸣曲管理员可以通过其DB名称显示属性,但它无法应用过滤器:)希望它有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.