我有一个用户列表,我尝试在
createdAt
属性上设置默认过滤器,以默认获取上个月创建的用户,而不是一次性获取所有用户。
这是我当前的尝试:
实体\用户.php
#[ORM\Column(name: 'creation_date', type: 'datetime', nullable: true)]
private ?DateTime $createdAt = null;
用户管理.php
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper->add('createdAt', DateTimeRangeFilter::class, [
'field_type' => DateTimeRangePickerType::class,
])
...
}
protected function configureDefaultFilterValues(array &$filterValues): void
{
$filterValues['createdAt'] = [
'value' => [
'start' => (new \DateTime())->modify('-1 month')->format('M d, Y, h:i:s a'),
'end' => (new \DateTime())->format('M d, Y, h:i:s a'),
],
];
}
这是一个格式问题。在秒和“am/pm”之间有一个特殊字符(Narrow No-Break Space),它破坏了整个过滤器。 我的代码最终是这样的:
protected function configureDefaultFilterValues(array &$filterValues): void
{
$start = (new \DateTime())->modify('-1 month')->format('F j, Y, g:i:sa');
$end = (new \DateTime())->format('F j, Y, g:i:sa');
$filterValues['createdAt'] = [
'value' => [
'start' => (new \DateTime())->modify('-7 day')->format('M d, Y, h:i:s a'),
'end' => (new \DateTime())->format('M d, Y, h:i:s a'),
'start' => preg_replace('/(am|pm)$/', "\u{202F}\$0", $start),
'end' => preg_replace('/(am|pm)$/', "\u{202F}\$0", $end),
],
];
}