好的...所以我发现,那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 %}
欢迎任何改进。