禁用生日选择字段

时间:2015-07-22 11:59:52

标签: symfony twig

我有一个带有输入生日的字段的表单。

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

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

{{ 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 %}

2 个答案:

答案 0 :(得分:2)

您不应该在模板中禁用它,而是在构建表单时禁用它。 (见birthday form reference

答案 1 :(得分:0)

也许尝试小部件而不是行:

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