Forms symfony2细枝引用基本小部件

Forms symfony2细枝引用基本小部件,forms,symfony,twig,Forms,Symfony,Twig,我正在尝试自定义我的symfony2 form choice_widget_扩展部分,并尝试引用choice_widget_的基础(标准)按照此说明折叠 但是我有一个错误,说 Notice: Undefined index: choice_widget_collapsed in /var/www/beta/app/cache/dev/twig/ff/8a/9f46c90c543b16e78e981aeda67b.php line 19 这是我的小枝代码: {% extends '::base.

我正在尝试自定义我的symfony2 form choice_widget_扩展部分,并尝试引用choice_widget_的基础(标准)按照此说明折叠

但是我有一个错误,说

Notice: Undefined index: choice_widget_collapsed in /var/www/beta/app/cache/dev/twig/ff/8a/9f46c90c543b16e78e981aeda67b.php line 19
这是我的小枝代码:

{% extends '::base.html.twig' %}

{% use 'form_div_layout.html.twig' with choice_widget_collapsed as base_choice_widget_collapsed %}

{% form_theme form _self %}

{% block choice_widget %}
{% spaceless %}
    {% if expanded %}
        {{ block('choice_widget_expanded') }}
    {% else %}
        {{ block('base_choice_widget_collapsed') }}
    {% endif %}
{% endspaceless %}
{% endblock choice_widget %}


{% block choice_widget_expanded %}
{% spaceless %}
    <div {{ block('widget_container_attributes') }}>
    {% for child in form %}
        {{ form_widget(child) }}
        {{ form_label(child) }}
        <br />
    {% endfor %}
    </div>
{% endspaceless %}
{% endblock choice_widget_expanded %}


{% block contents %}
{%extends'::base.html.twig%}
{%use'form_div_layout.html.twig'和choice_widget_折叠为base_choice_widget_折叠%}
{%form\u主题form\u self%}
{%block choice_widget%}
{%spaceless%}
{%如果展开%}
{{block('choice_widget_expanded')}
{%else%}
{{block('base_choice_widget_collapsed')}
{%endif%}
{%endspaceless%}
{%endblock选项\小部件%}
{%block choice_widget_expanded%}
{%spaceless%}
{表格%中的子项为%1}
{{form_widget(child)}
{{form_label(child)}

{%endfor%} {%endspaceless%} {%endblock choice_widget_expanded%} {%block contents%}
这在sf 2.2.1的全新composer安装中非常适用。您不需要清除缓存以在
dev
环境中注册模板更改,但值得一试。如果使用操作码缓存,还可能需要停止和启动(而不是重新启动)apache/php5 fpm

由于您只需修改
choice\u widget\u expanded
,因此您真正需要的是:

test.html.twig
啊。。我相信Dylans的答案是正确的,但对于我使用的symfony2版本(2.0.16),该表单的模板看起来有点不同,choice_widget_expanded没有自己的块,但都在这里

{% block choice_widget %}
{% spaceless %}
{% if expanded %}
    <div {{ block('widget_container_attributes') }}>
    {% for child in form %}
        {{ form_widget(child) }}
        {{ form_label(child) }}
        <br />          {# <-------- Here's my addition to the template #}
    {% endfor %}
    </div>
{% else %}
<select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}>
    {% if empty_value is not none %}
        <option value="">{{ empty_value|trans }}</option>
    {% endif %}
    {% if preferred_choices|length > 0 %}
        {% set options = preferred_choices %}
        {{ block('widget_choice_options') }}
        {% if choices|length > 0 and separator is not none %}
            <option disabled="disabled">{{ separator }}</option>
        {% endif %}
    {% endif %}
    {% set options = choices %}
    {{ block('widget_choice_options') }}
</select>
{% endif %}
{% endspaceless %}
{% endblock choice_widget %}
{%block choice\u widget%}
{%spaceless%}
{%如果展开%}
{表格%中的子项为%1}
{{form_widget(child)}
{{form_label(child)}


{#我也是这么想的,但是只添加了choice_widget_,就像在您的代码中扩展的一样(就像我第一次尝试一样),没有任何变化,我必须添加父控件才能生效。可能是我使用的是旧版本(2.0.16)?确实如此,在我的版本中,模板看起来不同,很抱歉,我应该先检查一下,或者从一开始就清楚我使用的是哪个版本。
/**
 * @Template()
 */
public function testAction()
{
    $builder = $this->createFormBuilder();
    $builder->add('choice', 'choice', array(
            'choices'=>array('one'=>'one', 'two'=>'two', 'three'=>'three'),
            'expanded'=>true
    ));
    $form = $builder->getForm();
    return array('form'=>$form->createView());
}
{% block choice_widget %}
{% spaceless %}
{% if expanded %}
    <div {{ block('widget_container_attributes') }}>
    {% for child in form %}
        {{ form_widget(child) }}
        {{ form_label(child) }}
        <br />          {# <-------- Here's my addition to the template #}
    {% endfor %}
    </div>
{% else %}
<select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}>
    {% if empty_value is not none %}
        <option value="">{{ empty_value|trans }}</option>
    {% endif %}
    {% if preferred_choices|length > 0 %}
        {% set options = preferred_choices %}
        {{ block('widget_choice_options') }}
        {% if choices|length > 0 and separator is not none %}
            <option disabled="disabled">{{ separator }}</option>
        {% endif %}
    {% endif %}
    {% set options = choices %}
    {{ block('widget_choice_options') }}
</select>
{% endif %}
{% endspaceless %}
{% endblock choice_widget %}