2016-08-16 12 views
1

Я пытаюсь создать форму Symfony2, где мне нужно ввести дату и время начала события, которое сохраняется как свойство в формате DateTime. В настоящее время время вводится с использованием раскрывающегося списка в 24-часовом формате. Я пытаюсь изменить его на 12-часовой формат. Согласно this post, Symfony TimeType не поддерживает 12-часовой формат. Один из способов обойти эту проблему - использовать плагин JQuery для ввода времени, но я стараюсь избегать этого. Самый простой способ сделать это показан в комментарии jarofgreen в приведенном выше post, где он предлагает небольшой патч для кода поставщика Symfony в TimeType.php. Я попытался реализовать это изменение, и он отлично работает. Проблема в том, что мне нужно сделать это без изменения кода поставщика. Вместо этого я решил создать расширение для TimeType, как предложено here.Как ввести время на форму Symfony2 в 12-часовом формате?

Я скопировал TimeType.php из кода поставщика в vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php, внеся необходимые изменения и сохранил его как MyTimeType под src/AppBundle/Form/Type. Проблема в том, что свойство, которое я пытаюсь изменить, относится к формату DateTimeType, а не к TimeType. Насколько я понимаю, DateTimeType использует DateType и TimeType для создания объекта DateTime. Мой вопрос: какие изменения мне нужно внести в DateTimeType, чтобы он использовал MyTimeType вместо TimeType для создания объекта DateTime?

ответ

0

Мы закончили использовать библиотеку bootstrap-datetimepicker. Он создает 12-часовое выпадающее меню для ввода времени и экономит время в 24-часовом формате. Единственная проблема с этим подходом связана с часовыми поясами. В нашем приложении время начала события вводится в форме вместе с местным часовым поясом. Время сохраняется в базе данных в формате UTC, а часовой пояс сохраняется в отдельном поле. До использования библиотеки datetimepicker время было введено с помощью 24-часового выпадающего меню и было сохранено правильно, учитывая учетную запись местного часового пояса. После добавления datetimepicker время не преобразуется в UTC правильно, когда локальный часовой пояс не совпадает с системным часовым поясом, указанным в php.ini. Мы решили не тратить много времени на это и закончили удаление поля переменной часового пояса. Это не оптимальное решение, но в этом случае гораздо важнее иметь возможность вводить время в 12-часовом формате, чем иметь возможность вводить переменные часовые пояса.

 Смежные вопросы

  • Нет связанных вопросов^_^