Пользовательский элемент управления датой и временем Symfony

#php #symfony

Вопрос:

Я новичок в symfony и хотел бы создать пользовательский элемент управления datetime, и в настоящее время я борюсь с шаблоном twig, поскольку элемент управления datetime, по-видимому, является составной частью элемента управления датой и временем, и все мои попытки создать новый терпят неудачу.

Элемент управления должен выглядеть следующим образом: введите описание изображения здесь

Отдельный индикатор даты и отдельный выбор времени, который показывает выпадающий список времени в соответствии с настройкой шага (не отдельный выпадающий список для часа и минуты).

Я попытался создать абстрактный тип, но не смог правильно отобразить в него данные.

Как лучше всего создать этот элемент управления, не влияя на обычную визуализацию типа времени (должна быть отдельной) и не влияя на тип данных и тип времени?

Ответ №1:

Во-первых, если новый формат данных для этого поля не требуется, как я понимаю, вам не следует создавать новый класс типа формы. Используйте стандартный тип даты и времени и переопределите шаблон ветки для этой поданной формы.

Шаблон поля формы можно переопределить, создав глобальный собственный шаблон «form.html.twig» или для отдельной формы, создав шаблон для данного поля в шаблоне формы, как описано в разделе Как работать с темами форм. Если вам нужен новый элемент управления только в некоторых случаях и вы хотите использовать обычный шаблон в целом, создайте новый «form.html.twig» с пользовательским шаблоном и используйте объявление:

 {% form_theme form 'form.html.twig' %}
 

поверх шаблона веточки, где отображается форма.

Как вы заметили, DateTimeType является составным из типа данных и типа времени, и если вы хотите использовать отдельные входные данные для обоих типов, вы можете переопределить блоки шаблонов для типа данных и для типа времени отдельно. Если вам нужен один ввод для обоих, переопределите блок шаблона типа даты и времени.

Комментарии:

1. Спасибо за объяснение, но где мне найти шаблон веточки, содержащий <тип ввода=»дата»… или