我在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仍然显示该元素的标签。
如果没有显示实体结果的情况,如何完全取消标签?谢谢!
答案 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上,从而绕过了你的问题。