2013-01-21 9 views
7

ソナタのadmin datagridfiltersで日時フィルタを設定するにはどうすればいいですか?ソナタで日時の書式を設定する方法admin filter symfony2

は私が編集フォーム

->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ある - 私のサーバー(CentOSの5.2、PHP 5.3.20)に月のフィールドは、タイムスタンプとしてレンダリングされているが、私のdevのマシン上で、それが完全にレンダリングされる、ので、私はこれを行うことを余儀なくしています
->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')) 

理由がありますこの問題に関する質問はほとんどありませんが、実際の修正はありません。この2つのリンクは、私の問題の主な問題を記述しています。 symfony2 - date choice input renders timestamp instead of month namehttp://iqwen.net/question/155068

ので、私はソナタの管理フィルタの日時/日付フィールド

  • のフォーマットオプションを設定する方法を3つの事

    1. を知りたいのですが、問題を解決する方法はあります月はLinuxのタイムスタンプとして表示されますenv
    2. symfony2/sonata adminの日付/日時フィールドのグローバルフォーマットオプションを設定するにはどうすればいいですか?各フィールドの横に書式を指定する必要はありません

    何かお手数をおかけしますようお願い申し上げます。

  • +0

    [this](http://stackoverflow.com/a/10433153/1553481)または[this](http://stackoverflow.com/a/16289056/1553481)をご覧ください。 – likeitlikeit

    +0

    ベンダーのバンドルを2.2に更新した後、この問題は解決しました。 – dagger

    答えて

    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で定義キャストです。

    関連する問題