禁用生日选择字段

Disable birthdate choice field

我有一个表单,其中包含用于输入生日的字段。

$builder->add('birthDate', 'birthday', array('label' => 'birthDate', 'translation_domain' => 'messages', 'required' => false, 'widget' => 'choice'))

在某些情况下,我想禁用 twig 模板中的生日修改,例如。

{{ form_row(form.birthDate.day, {'attr': {'disabled': true}}) }}
{{ form_row(form.birthDate.month, {'attr': {'disabled': true}}) }}
{{ form_row(form.birthDate.year, {'attr': {'disabled': true}}) }}

这工作正常,但如果我在一个语句中呈现完整的行,例如:

{{ form_row(form.birthDate, {'attr': {'disabled': true}}) }}

这不会禁用生日字段。有没有人有同样的问题?

我的问题解决了,问题是属性没有注入date_widget

我覆盖了date_widget,现在一切正常。

修改前:

{% block date_widget -%}
    {% if widget == 'single_text' %}
        {{- block('form_widget_simple') -}}
    {% else -%}
        {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) -%}
        {% if datetime is not defined or not datetime -%}
            <div {{ block('widget_container_attributes') -}}>
        {%- endif %}
        {{- date_pattern|replace({
            '{{ year }}': form_widget(form.year),
            '{{ month }}': form_widget(form.month),
            '{{ day }}': form_widget(form.day),
        })|raw -}}
        {% if datetime is not defined or not datetime -%}
            </div>
        {%- endif -%}
    {% endif %}
{%- endblock date_widget %}

经过我的修改

{% block date_widget -%}
    {% if widget == 'single_text' %}
        {{- block('form_widget_simple') -}}
    {% else -%}
        {% set attr = attr|merge({class: (attr.class|default('') ~ ' form-inline')|trim}) -%}
        {% if datetime is not defined or not datetime -%}
            <div {{ block('widget_container_attributes') -}}>
        {%- endif %}
        {{- date_pattern|replace({
            '{{ year }}': form_widget(form.year, {'attr': attr}),
            '{{ month }}': form_widget(form.month, {'attr': attr}),
            '{{ day }}': form_widget(form.day, {'attr': attr}),
        })|raw -}}
        {% if datetime is not defined or not datetime -%}
            </div>
        {%- endif -%}
    {% endif %}
{%- endblock date_widget %}

也许可以尝试用小部件代替行:

{{ form_widget(form.birthDate.day, {'attr': {'disabled': true}}) }}

你不应该在你的模板中禁用它,但是当你构建你的表单时。 (参见 birthday form reference