2013-12-14 36 views
2

我在表單構建器中使用選項字段的選項empty_value,並且我想在生成的HTML中將其設置爲'disabled'避免用戶選擇該選項。 在字段類型中有一個名爲'disabled'的選項,但我不知道如何在empty_value中實現它(如果可能的話)。在Symfony 2.4的formBuilder中將'empty_value'選項設置爲'disabled'

這是建造者的重要部分。它可以工作,但可以選擇空白選項。

->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

回答

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

相關問題