Search code examples
symfonyjquery-ui-datepickersymfony-formssonata-admin

Sonata date picker month resets to 1


I use sonata_type_datetime_range_picker. I works correct on the frontend side. But when I submit form it remakes month value to 1. I.e. my submitted value is "2017-02-02 03:14:00" and value after submit is "2017-01-02 03:14:00". According to the profiler date is correct in the Request object but is wrong in Symfont Form Component.

My admin code

    $datePickerOptions = [
        'format' => "YYYY-MM-DD HH:mm:SS",
        'datepicker_use_button' => false,
        'dp_use_minutes' => false,
        'dp_use_seconds' => false,
        'dp_side_by_side' => true,
        'dp_language' => 'en',
    ];

    $datagridMapper
        ->add(
            'dateTime',
            'doctrine_orm_datetime_range',
            [
                'show_filter' => true,
                'field_type' => 'sonata_type_datetime_range_picker',
                'field_options' => [
                    'field_options_start' => $datePickerOptions,
                    'field_options_end' => $datePickerOptions,
                ],
            ]
        );

What am I doing wrong?


Solution

  • Ok, I kinda found the working solution myself. Maybe it helps someone other sometime:

        $now  = new \DateTime();
        $historyStart = new \DateTime('Dec 20 2016');
        $dateFormat = 'd.m.y H';
    
        $datagridMapper
            ->add(
                'dateTime',
                'doctrine_orm_datetime_range',
                ['show_filter' => true,],
                'sonata_type_datetime_range_picker',
                [
                    'field_options_start' => [
                        'dp_min_date'     => $historyStart->format($dateFormat),
                        'dp_max_date'     => $now->format($dateFormat),
                        'dp_default_date' => $now->format($dateFormat),
                        'dp_language'     => 'en',
                        'format' => 'dd.MM.yy HH',
                        'datepicker_use_button' => false,
                        'dp_use_minutes' => false,
                        'dp_use_seconds' => false,
                        'dp_side_by_side' => true,
                    ],
                    'field_options_end' => [
                        'dp_min_date'     => $historyStart->format($dateFormat),
                        'dp_max_date'     => $now->format($dateFormat),
                        'dp_default_date' => $now->format($dateFormat),
                        'dp_language'     => 'en',
                        'format' => 'dd.MM.yy HH',
                        'datepicker_use_button' => false,
                        'dp_use_minutes' => false,
                        'dp_use_seconds' => false,
                        'dp_side_by_side' => true,
                    ]
                ]
            );