我是symfony(2.1)的新手,我有一个简单的问题,我想改变“实体字段类型”在表单中的select标签中生成选择列表的方式。
在我的categoryType.php中,在buildForm方法中我有这样的东西:
$builder
->add('parent', 'entity', array(
'class' => 'TestAdvBundle:Category',
'property' => 'name',
'label' => 'label.parent',
))
;
这很好用,所有在db中持久化的Category实体都以生成的形式存在于select标记中。但我想要做的是略微改变这个生成的选择列表。实际上,我想在列表中有一个“假”选项代表“根类别”,我不希望我编辑的对象在此处列出(此字段是父ID,并且它指向与编辑对象相同的对象类型等等。这个字段是我编辑的类别的父类别,所以实际上我不希望能够选择self作为父类别。)
我猜这个“实体字段类型”使用findAll()
存储库方法来获取其结果。所以我做了特定的findAllForList()
方法,我返回想要的数组。但我找不到告诉“实体字段类型”使用我的存储库方法而不是findAll()
的方法。
答案 0 :(得分:2)
您可以使用Querybuilder选项和随实体字段类型提供的empty_field方法。 http://symfony.com/doc/master/reference/forms/types/entity.html#query-builder
在“使用实体的自定义查询”
下的链接URL中解释了querybuilder