如何在Symfony 2.1中自定义实体字段类型,以便它使用特定的存储库方法?

时间:2013-01-02 19:49:23

标签: php forms symfony repository entity

我是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()的方法。

1 个答案:

答案 0 :(得分:2)

您可以使用Querybuilder选项和随实体字段类型提供的empty_field方法。 http://symfony.com/doc/master/reference/forms/types/entity.html#query-builder

在“使用实体的自定义查询”

下的链接URL中解释了querybuilder