![](/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.