我想设置两部分呈现的DateTimeType字段的属性。我将设置为date_widget
和time_widget
设置为'single_text'
的两部分DateTimeType字段呈现:
$builder
->add('startDate', DateTimeType::class, array(
'date_widget' => 'single_text',
'time_widget' => 'single_text',
'date_format' => \IntlDateFormatter::SHORT,
'with_seconds' => false,
'input' => 'datetime',
'label' => 'bundle_name.form.travel.startDate',
'attr' => array('class' => 'peter')
))
此处,属性(attr
)class="peter"
未应用于两个输入字段,而是应用于div
:
<div id="travel_startDate" class="peter">
<div class="bootstrap-datepicker date">
<input type="text" id="travel_startDate_date" name="travel[startDate][date]" required="required" class="form-control" value="2/1/17" />
</div>
<input type="time" id="travel_startDate_time" name="travel[startDate][time]" required="required" class="form-control" value="22:02" />
</div>
如何在表单构建器的input
函数中设置add(...)
字段的属性?
我特别要问,因为我不想手动在twig
模板中设置小部件。
答案 0 :(得分:1)
这可以通过在Symfony中调整表单主题来实现。 我主题中的以下部分为我做了诀窍:
{% block datetime_widget -%}
{% if widget == 'single_text' %}
{{- block('form_widget_simple') -}}
{% else %}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) %}
{% set widget_attr = {class: ''} %}
{% if attr.class is defined and 'datepicker' in attr.class %}
{% set attr = attr|merge({class: attr.class|replace({'datepicker' : ''}) }) %}
{% set widget_attr = widget_attr|merge({class: 'datepicker' }) %}
{% endif %}
<div {{ block('widget_container_attributes') }}>
{{ form_errors(form.date) }}
{{ form_errors(form.time) }}
{{ form_widget(form.date, { datetime: true, attr: widget_attr } ) }}
{{ form_widget(form.time, { datetime: true } ) }}
</div>
{% endif %}
{%- endblock datetime_widget %}
简而言之:
答案 1 :(得分:0)
我使用了材料套件,我想将“ select picker”类添加到年份月份和日期的每个html select标签中。我可以通过以下方式实现。我手动编写表单,然后将attr选项传递给form_row。
{{。(form.date_start.day,{'attr':{'class':'selectpicker'}})}}
...从移动设备添加,用于历史记录