0

我在 Symfony2 的表单构建器中使用实体类型的表单元素。

 ->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 仍然显示元素的标签。

对于没有要显示的实体结果的情况,如何完全抑制标签?谢谢!

4

2 回答 2

1

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

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

只有当它不为空时才会显示它

于 2012-12-31T15:26:08.177 回答
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 上,从而绕过您的问题。

于 2013-07-12T07:40:01.127 回答