2013-01-21 27 views
7

सोनाटा व्यवस्थापक datagridfilters में दिनांक या दिनांक फिल्टर कैसे स्थापित करने के लिए?कैसे datetime और सोनाटा व्यवस्थापक फिल्टर 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
->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')) 

कारण यह है कि मुझे ऐसा करने के लिए मजबूर किया गया है क्योंकि, मेरे सर्वर (सेंटोस 5.2, पीएचपी 5.3.20) पर महीने का क्षेत्र टाइमस्टैम्प के रूप में प्रस्तुत किया जा रहा है लेकिन मेरी देव मशीन पर इसे पूरी तरह से प्रस्तुत किया जाता है - वहां एक कुछ इस मुद्दे लेकिन कोई वास्तविक ठीक के बारे में सवाल। इन 2 लिंक मेरी समस्या मुख्य समस्या का वर्णन - जैसे symfony2 - date choice input renders timestamp instead of month name, http://iqwen.net/question/155068

तो मैं 3 चीजें

  1. कैसे सोनाटा व्यवस्थापक फिल्टर
  2. में दिनांक/तिथि खाने के लिए प्रारूप विकल्प सेट करने के लिए जानना चाहते हैं वहाँ मुद्दा जहां ठीक करने के लिए एक रास्ता है महीने linux env
  3. पर दिनांक/डेटाटाइम फ़ील्ड के लिए वैश्विक प्रारूप विकल्प कैसे सेट कर सकता है, इसलिए मुझे प्रत्येक फ़ील्ड के आगे प्रारूप निर्दिष्ट करने की आवश्यकता नहीं है

किसी भी मदद की बहुत सराहना की wiill के बारे में।

+0

आप [इस] (http://stackoverflow.com/a/10433153/1553481) पर एक नज़र या [इस] (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 साथ परिभाषित है।