Я пытаюсь создать собственный виджет формы Symfony на основе некоторых элементов управления jQueryUI
. Виджет формы должен представлять настраиваемый класс с двумя свойствами и, таким образом, должен содержать два элемента управления вводом. Как я могу добавить атрибуты к этим элементам управления вводом?
Подробности:
Предположим, следующий настраиваемый класс должен быть представлен пользовательский виджет:
class Room {
public $building = "main";
public $roomNo = 1;
}
class Lecture {
public $date;
public $room;
}
class LectureType extends AbstractType {
...
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('date', DateType::class, [...])
->add('room', RoomType::class, [...]) // Using custom RoomType
;
}
}
class RoomType extends AbstractType {
...
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('building', ChoiceType::class, [...])
->add('roomNo', IntegerType::class, [...])
;
}
}
// room_widget.html.twig
{% block app_room_widget %}
{# Adding the attributes for the widget container or the complete widget is easy #}
{# using either the widget_container_attributes or widget_attributes block. But #}
{# how to add the attributes to the specific fields? #}
<div {{ block('widget_container_attributes') }} ">
...
<input {{ block('how_to_add_attributes_here?') }} />
<input id="{{ form.building.vars.id }}" name="{{ form.value.building.full_name }}"{% if disabled %} disabled="disabled"{% endif %}{% if required %} required="required"{% endif %}{% if form.building.vars.value is not empty %} value="{{ form.building.vars.value }}"{% endif %}/>
<script>
// configure jQueryUI controls...
</script>
</div>
{% endblock %}
Добавить атрибуты к полному виджету легко, но как добавить атрибуты в специальное поле c, не выполняя все вручную?