7

如何在奏鸣曲管理数据网格过滤器中设置日期时间或日期过滤器?

我想为奏鸣曲管理过滤器执行以下操作,它适用于编辑表单

->add('createdAt', 'datetime', array('label' => 'Created at', 'disabled' => true, 
                  'input' => 'datetime',
                  'date_widget' => 'choice',
                  'time_widget' => 'choice',
                  'date_format' => 'MMM d, y',))

->add('deadline', 'date', array('label' => 'Deadline', 'disabled' => true, 
                  'input' => 'datetime',
                  'widget' => 'choice',
                  'format' => 'MMM d, y'))

但是当在过滤器中使用时,它不起作用(或选项被忽略)

->add('createdAt', 'doctrine_orm_datetime', array('label' => 'Created At',
                'input' => 'datetime',
                  'date_widget' => 'choice',
                  'time_widget' => 'choice',
                  'date_format' => 'MMM d, y'))

->add('deadline', 'doctrine_orm_date', array('label' => 'Deadline',
                'input' => 'datetime',
                  'widget' => 'choice',
                  'format' => 'MMM d, y'))

我被迫这样做的原因是,在我的服务器(centos 5.2,php 5.3.20)上,月份字段被呈现为时间戳,但在我的开发机器上它被完美呈现 - 关于这个问题有几个问题但没有真正的修复。这 2 个链接描述了我的问题主要问题 - 例如symfony2 - 日期选择输入呈现时间戳而不是月份名称, http: //iqwen.net/question/155068

所以我想知道三件事

  1. 如何在奏鸣曲管理过滤器中设置日期时间/日期字段的格式选项
  2. 有没有办法解决月份在 linux env 上显示为时间戳的问题
  3. 如何在 symfony2 / sonata admin 中为日期 / 日期时间字段设置全局格式选项,这样我就不必指定每个字段旁边的格式

任何有关的帮助将不胜感激。

4

1 回答 1

1

你可以这样做:

->add('createdAt', 'doctrine_orm_callback', 
              array(
                'label' => 'Created At',
                'callback' => function($queryBuilder, $alias, $field, $value) {
                                if (!$value['value']) {
                                    return;
                                }
                                $time = strtotime($value['value']);
                                $inputValue = date('Y-m-d', $time);
                                $queryBuilder->andWhere("DATE($alias.createdAt) <= :CreatedAt");
                                $queryBuilder->setParameter('CreatedAt', $inputValue);
                                return true;
                              },
                'field_type' => 'text'
              ), null, array('attr' => array('class' => 'datepicker')))

DATE 函数是您使用 DQL 定义的转换。

于 2014-03-07T20:47:33.480 回答