好的...所以我发现,那group_by
是用来获取optgroup的<select>
。我的EntityType
有:
$builder->add('item', 'entity' array(
'class' => 'MyBundle:Item',
'property' => 'name',
'multiple' => true,
'expanded' => true,
'group_by' => 'group.name',
);
在我的模板中:
{% form_theme form 'MyBundle::form_theme.html.twig' %}
{{ form_widget(form.item) }}
{{ form_rest(form) }}
在我的表单主题中,我只是尝试复制choice_widget_collapsed
,但存在一些差异(例如:检查是否检查了值)。我不知道这是否是最好的方法,但它对我有用。也许是因为我只使用item
实体选择而没有其他输入字段。我的表单主题:
{% block choice_widget_expanded %}
{% spaceless %}
<div {{ block('widget_container_attributes') }}>
{% set options = choices %}
{{ block('choice_widget_expanded_options') }}
</div>
{% endspaceless %}
{% endblock choice_widget_expanded %}
{% block choice_widget_expanded_options %}
{% spaceless %}
{% for group_label, choice in options %}
{% if choice is iterable %}
<fieldset>
<legend>{{ group_label|trans({}, translation_domain) }}</legend>
{% set options = choice %}
{{ block('choice_widget_expanded_options') }}
</fieldset>
{% else %}
<input type="checkbox" name="{{ full_name }}[]" value="{{ choice.value }}"{% if value[choice.value] %} checked="checked"{% endif %}/> {{ choice.label|trans({}, translation_domain) }}
{% endif %}
{% endfor %}
{% endspaceless %}
{% endblock choice_widget_expanded_options %}
欢迎任何改进。