禁用生日选择字段
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)
我有一个表单,其中包含用于输入生日的字段。
$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)