我在表单构建器中使用选项字段的选项empty_value,我想在生成的HTML中将其设置为“禁用”,以避免用户选择该选项。 字段类型中有一个名为“disabled”的选项,但如果可能的话,我不知道如何在empty_value中实现它。
这是建造者的重要部分。它可以工作,但可以选择空选项。
->add('game', 'entity', array(
'empty_data' => null,
'empty_value' => 'Selecciona un juego',
'class'=>'GameBundle:Game',
'property'=>'name',
'multiple'=>false
))
关于它的文档: http://symfony.com/doc/current/reference/forms/types/choice.html#empty-value
答案 0 :(得分:2)
您可以创建新的表单主题,将默认选项呈现为已禁用。您所要做的就是覆盖choice_widget_collapsed
折叠块:
{% extends 'form_div_layout.html.twig' %}
{% block choice_widget_collapsed %}
{% spaceless %}
{% if required and empty_value is none and not empty_value_in_choices %}
{% set required = false %}
{% endif %}
<select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}>
{% if empty_value is not none %}
<option value=""{% if required %} disabled="disabled"{% if value is empty %} selected="selected"{% endif %}{% endif %}>{{ empty_value|trans({}, translation_domain) }}</option>
{% endif %}
{% if preferred_choices|length > 0 %}
{% set options = preferred_choices %}
{{ block('choice_widget_options') }}
{% if choices|length > 0 and separator is not none %}
<option disabled="disabled">{{ separator }}</option>
{% endif %}
{% endif %}
{% set options = choices %}
{{ block('choice_widget_options') }}
</select>
{% endspaceless %}
{% endblock choice_widget_collapsed %}
重要说明:这是choice
表单类型的原始行为。但是,由于BB10浏览器存在问题,因此已将其删除。请参阅提交97cbb19b。