0

我是 symfony (2.1) 的新手,我有一个简单的问题,我想改变“实体字段类型”在表单中的选择标签中生成选择列表的方式。

在我的 categoryType.php 中,在 buildForm 方法中我有这样的东西:

$builder
   ->add('parent', 'entity', array(
   'class' => 'TestAdvBundle:Category',
   'property' => 'name',
   'label'  => 'label.parent',
))
;

这很好用,所有保存在 db 中的 Category 实体都以生成的形式出现在 select 标记中。但我想做的是稍微改变这个生成的选择列表。实际上,我想要一个代表“根类别”的列表中的“假”选择,并且我不希望在此处列出我编辑的对象(此字段是父 ID,它指向与编辑对象相同的对象类型等。这个字段是我编辑的类别的父类别,所以实际上我不希望能够选择 self 作为父类别)。

我猜这个“实体字段类型”使用findAll()存储库方法来获取它的结果。所以我做了特定的findAllForList()方法,我返回想要的数组。但是我找不到告诉“实体字段类型”使用我的存储库方法而不是findAll().

4

1 回答 1

2

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

查询构建器在“对实体使用自定义查询”下的链接 URL 中进行了说明

于 2013-01-02T21:16:18.020 回答