20

मैं कैसे जो jQuery के यूआई datepicker का उपयोग करता सोनाटा व्यवस्थापक बंडल में एक doctrine_orm_datetime_range फ़िल्टर बनाना चाहेंगे?सोनाटा व्यवस्थापक बंडल: DatePicker रेंज

मैं निम्नलिखित कोशिश की, लेकिन यह काम नहीं करता:

protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper 
     ->add('datumUitgevoerd', 'doctrine_orm_datetime', array('widget' => 'single_text'), null, array('required' => false, 'attr' => array('class' => 'datepicker'))) 
    ; 
} 

उत्तर

56

UPDATED 2016-02-02

आप 3. * उपयोग कर रहे हैं Symfony निम्नलिखित टहनी विन्यास इस्तेमाल किया जाना चाहिए:

# app/config/config.yml twig: # ... form_themes: - 'SonataCoreBundle:Form:datepicker.html.twig'

UPDATED 2015-05-04

कस्टम डेट पिकर का उपयोग अब और आवश्यक नहीं है। सोनाटा में मूल डेटाटाइम पिकर होता है, जो ट्विटर बूस्ट्रैप के साथ अच्छी तरह से काम करता है।

दिनांक पिकर प्रपत्र फ़ील्ड्स सक्रिय करने के लिए, आप अनुप्रयोग/config.yml में टहनी रूप संसाधनों में SonataCoreBundle:Form:datepicker.html.twig जोड़ने के लिए:

twig: 
    # ... 
    form: 
     resources: 
      - 'SonataCoreBundle:Form:datepicker.html.twig' 

आप रूप में पिकर का उपयोग कर सकते हैं:

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('createdAt', 'sonata_type_date_picker'); 
} 
datetime फिल्टर में

:

protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper 
      ->add('createdAt', 'doctrine_orm_datetime', array('field_type'=>'sonata_type_datetime_picker',)); 
} 

या के रूप में दिनांक सीमा फिल्टर:

protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper 
      ->add('createdAt', 'doctrine_orm_datetime_range', array('field_type'=>'sonata_type_datetime_range_picker',)); 
} 

पुराने उत्तर

इस कोड doctrine_orm_datetime उपयोग में datepicker का उपयोग करें:

protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper->add('datumUitgevoerd', 'doctrine_orm_datetime', array(), null, array('widget' => 'single_text', 'required' => false, 'attr' => array('class' => 'datepicker'))); 
} 

या doctrine_orm_datetime_range में datepicker उपयोग करने के लिए कोड की तरह दिखना चाहिए:

protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
{ 
    $datagridMapper->add('datumUitgevoerd', 'doctrine_orm_datetime_range', array(), null, array('widget' => 'single_text', 'required' => false, 'attr' => array('class' => 'datepicker'))); 
} 

और तुम DatePic प्रारंभ करने के लिए अपनी कस्टम जावास्क्रिप्ट फ़ाइल जोड़ने के लिए मुख्य टेम्पलेट को अधिभारित करना चाहिए केर।

#File app/config.yml 
sonata_admin: 
    title:  Admin 
    title_logo: /logo_admin.png 
    templates: 
     layout: AcmeDemoBundle::standard_layout.html.twig 
#...another Sonata and Symfony settings... 
{# File src/Acme/Bundle/DemoBundle/Resources/views/standard_layout.html.twig #} 
{% extends 'SonataAdminBundle::standard_layout.html.twig' %} 

{% block javascripts %} 
    {{ parent() }} 
    <script src="{{ asset('bundles/acmedemo/js/jquery_admin.js') }}" type="text/javascript"></script> 
{% endblock %} 
//File web\bundles\acmedemo\js\jquery_admin.js 
jQuery(document).ready(function(){ 
     jQuery.datepicker.setDefaults(jQuery.datepicker.regional[ "" ]); 
     jQuery(".datepicker").datepicker(jQuery.datepicker.regional[ "en" ]); 
}); 
+0

मैंने आपके निर्देशों का पालन किया, और यह तब तक काम करता है जब तक कि मैं "फ़िल्टर" बटन दबाता हूं। मुझे दिनांक फ़ील्ड के लिए एक सत्यापन त्रुटि मिलती है "यह मान मान्य नहीं है।" एक बात जो मैं वर्तमान में अलग कर रहा हूं वह है कि मैं 'इनपुट_ टाइप' => 'टाइमस्टैम्प' का उपयोग कर रहा हूं, इसके अलावा, वही है। डिफ़ॉल्ट date_range विजेट मेरे लिए बस ठीक काम करता है। कोई विचार क्यों? – Onema

+1

मेरी समस्या की कुंजी सही प्रारूप सेट करना था: '' प्रारूप '=>' एम/डी/वाई ' – Onema

+1

धन्यवाद! समाधान पूरी तरह से काम करता है। – carzogliore

7

मुझे पता है कि यह पुराने विषय है, लेकिन यह मुझे थोड़ी वैसे भी मदद करता है, तो हो सकता है यह भविष्य में किसी को मदद मिलेगी।

मैं datepicker के लिए एक तिथि प्रारूप स्थापित करने के लिए एक रास्ता खोजने है:

$datagridMapper->add('createdAt', 'doctrine_orm_date_range', [ 
    'field_type'=>'sonata_type_date_range_picker', 
    'field_options' => [ 
     'field_options' => [ 
      'format' => 'yyyy-MM-dd' 
     ] 
    ] 
]); 

डिफ़ॉल्ट कि प्रारूप parametr सोनाटा \ CoreBundle \ फार्म \ प्रकार \ DatePickerType में सेट किया गया है पर।

+0

बस जो मैं खोज रहा था, आपको केवल कॉन्फ़िगरेशन फ़ाइल में दिनांक पिकर के लिए टेम्पलेट जोड़ने की आवश्यकता है। – kunicmarko20