Получение форматов даты и времени для сопоставления с полем формы jquery datetimepicker и symfony

Формат даты и времени по умолчанию в поле даты и времени Symfony: yyyy-MM-dd HH:mm:ss для моей страны. Это не очень удобно для пользователя, поэтому я хотел бы изменить его на длинный формат даты. Я также использую jquery datetimepicker после загрузки страницы, чтобы помочь пользователям выбрать правильную дату / время.

Я не могу заставить форматы даты совпадать, и Symfony считает данные, которые были возвращены, как действительную дату.

Код контроллера для формы:

$form = $this->createFormBuilder($auction)
        ->add('endDate', DateTimeType::class, array(
                'view_timezone' => $user->getTimeZone(),
                'widget' => 'single_text',
                'format' => \IntlDateFormatter::FULL
            ))
        ->add('save', SubmitType::class, array('label' => 'Create Auction', 'attr'=> array('class'=>'button primary')))
        ->getForm();

Посмотреть код для выбора даты и времени:

$(document).ready(function(){
        $.datetimepicker.setDateFormatter({
            parseDate: function(date, format){
                var d = moment(date, format);
                return d.isValid() ? d.toDate() : false;
            },
            formatDate: function(date, format){
                return moment(date).format(format);
            }
        });
        $("#form_endDate").datetimepicker({
            format: 'dddd, MMMM D, YYYY h:mm:ssa',
            formatDate: 'dddd MMMM D, YYYY',
            formatTime: 'h:mm a'
        });
    });

Я также попытался использовать тот же текст в контроллере, чтобы соответствовать формату в инициализации datetimepicker:

'format' => 'dddd, MMMM D, YYYY h:mm:ssa'

Но это не помогает. В журналах тоже ничего нет, поэтому я не знаю, как еще устранить неполадки.

Как сделать так, чтобы эти форматы совпадали, чтобы введенный пользователем ввод был действительным?

1 ответ

Ваш формат, в вашем formbuilder неверен. Согласно документации: http://symfony.com/doc/current/reference/forms/types/date.html

Формат должен быть указан следующим образом:

$builder->add('date_created', DateType::class, array(
    'widget' => 'single_text',
    // this is actually the default format for single_text
    'format' => 'yyyy-MM-dd',
));

Вы можете просмотреть все допустимые форматы здесь: http://userguide.icu-project.org/formatparse/datetime

Другие вопросы по тегам