7

sonata admin datagridfilters で日時または日付フィルターを設定するには?

編集フォームで機能するソナタ管理フィルターに対して次のことを行いたい

->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'))

しかし、doctrine_orm_date と doctrine_orm_datetime を使用するフィルターで使用すると機能しません (またはオプションが無視されます)。

->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 つのリンクは、私の問題の主な問題を説明してい ます

だから私は3つのことを知りたいです

  1. Sonata 管理フィルターで日時/日付フィールドの形式オプションを設定する方法
  2. Linux環境で月がタイムスタンプとして表示される問題を修正する方法はありますか
  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 に答える