Symfony2 FormBuilder,实体类型没有值

时间:2012-12-16 03:03:09

标签: symfony-2.1

我在Symfony2的formbuilder中使用了实体类型的表单元素。

 ->add('categories', 'entity', array('required' => false,
            'multiple' => true,
            'expanded' => true,
            'label'=>'Categories (select all that apply)',
            'class' => 'AcmeBundle:Category',
            'query_builder' => function(EntityRepository $er) use ($profile) {
                return $er->createQueryBuilder('u')
                    ->where('u.profile = :profile')
                    ->setParameter('profile', $profile)
                    ->orderBy('u.name', 'ASC');
            }));

有一种情况是数据库查询不返回任何值,但Symfony2仍然显示该元素的标签。

如果没有显示实体结果的情况,如何完全取消标签?谢谢!

2 个答案:

答案 0 :(得分:1)

在关联的.twig文件中添加以下内容:

{% if not empty(entity.categories) %}
    {{ form_label(form.categories) }}
    {{ form_errors(form.categories) }}
    {{ form_widget(form.categories) }}
{% endif %}

仅当它不为空时才会显示

答案 1 :(得分:0)

由于我的编辑被拒绝,改善了@alainivars的答案。

在关联的.twig文件中添加以下内容:

{% if not empty(entity.categories) %}
    {{ form_label(form.categories) }}
    {{ form_errors(form.categories) }}
    {{ form_widget(form.categories) }}
{% else %}
    {% do form.categories.setRendered %}
{% endif %}

只有当它不为空并且在字段上标记了setRendered时才会显示它,因此它不会显示在form_rest上,从而绕过了你的问题。