2013-12-14 2 views
2

Я использую параметр empty_value поля выбора в построителе форм, и я хотел бы установить его как «отключено» в сгенерированном HTML для не позволяя пользователю выбрать этот параметр. В типе поля есть опция «отключена», но я не знаю, как ее реализовать в empty_value, если это возможно.Установить как 'disabled' параметр empty_value в formBuilder в Symfony 2.4

Это важная часть строителя. Он работает, но может быть выбран пустой параметр.

->add('game', 'entity', array(
    'empty_data' => null, 
    'empty_value' => 'Selecciona un juego', 
    'class'=>'GameBundle:Game', 
    'property'=>'name', 
    'multiple'=>false 
    )) 

Docs об этом: 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.

Смежные вопросы