自升级以来,我所有的Symfony2 formbuilder实体字段都消失了

时间:2013-10-07 12:13:31

标签: forms symfony entity symfony-2.3

自symfony2 2.0以来,表单构建器类型实体是否彻底改变了?因为此代码用于返回“BizTVContainerManagementBundle:ContainerSize”类型的所有实体的列表,现在根本不返回任何内容,除了空值...

没有错误消息。我使用{{form_widget(form)}}渲染表单,因此视图中的任何内容都没有更改......

    $builder            
        ->add('mainContent', 'entity', array(
            'label' => 'Välj storlek på mainContent (kan inte ändras i efterhand). Endast de företag som har denna storlek på sitt mainContent kommer att få åtkomst till denna layoutmall. ',
            'property' => 'select_label',
            'class' => 'BizTVContainerManagementBundle:ContainerSize',
            ))  

*更新*

Soo ...毕竟它在视图中,因为我有一个自定义渲染的另一个表单控件(不是我丢失的数据)。

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

{% form_theme form _self %}

{% 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 contents %}

<h1>Skapa ny skärmlayout</h1>
<div class="t_wrap">
    <form action="{{ path('createLayoutTemplate') }}" method="post" {{ form_enctype(form) }} novalidate>
        {{ form_widget(form) }}
        <p>
            <button type="submit" class="green">Skapa</button>
        </p>
    </form>

    <p>
    När du har redigerat formulär- och vy-filerna (som skapas då du klickar "skapa"), och testat att de fungerar buggfritt så behöver du klicka 'edit' på denna template och kryssa i "produktion", först då blir mallen valbar vid skapande av innehåll.
    </p>

    <a href="{{ path('listLayoutTemplates') }}"><button>Tillbaka</button></a>
</div>

{% endblock %}

我发现这需要在symfony2的2.3版本中以不同的方式完成(我生活在2.0版本中)。大惊喜?哈哈......不再了。

我会回答解决方案如何修复它,我找到了一些文档......

1 个答案:

答案 0 :(得分:0)

......我发现半年前我曾向半年前提出同样的问题symfony2 twig referencing base widget

所以这就是结果。

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

{% form_theme form _self %}

{% 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 %}

<h1>Skapa ny skärmlayout</h1>
<div class="t_wrap">
    <form action="{{ path('createLayoutTemplate') }}" method="post" {{ form_enctype(form) }} novalidate>
        {{ form_widget(form) }}
        <p>
            <button type="submit" class="green">Skapa</button>
        </p>
    </form>

    <p>
    När du har redigerat formulär- och vy-filerna (som skapas då du klickar "skapa"), och testat att de fungerar buggfritt så behöver du klicka 'edit' på denna template och kryssa i "produktion", först då blir mallen valbar vid skapande av innehåll.
    </p>

    <a href="{{ path('listLayoutTemplates') }}"><button>Tillbaka</button></a>
</div>

{% endblock %}